news 2026/4/17 18:11:19

leetcode 873. Length of Longest Fibonacci Subsequence 最长的斐波那契子序列的长度

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 873. Length of Longest Fibonacci Subsequence 最长的斐波那契子序列的长度

Problem: 873. Length of Longest Fibonacci Subsequence 最长的斐波那契子序列的长度

解题过程

对每两个数字a, c,若差s存在且在两者前面s, …, a, c;那么就可以递归查找下去,将s赋值给a,将a赋值给c,并求得最大长度

Code

class Solution { public: unordered_map<int, int> ump; int lenLongestFibSubseq(vector<int>& arr) { for(int i = 0; i < arr.size(); i++) { ump[arr[i]] = i; } int n = arr.size(), mid = 1, tail = 2, su, num, mx = INT_MIN; for(int i = 2; i < n; i++) { for(int j = i - 1; j > 0; j--) { tail = i; mid = j; num = 2; while(true) { su = arr[tail] - arr[mid]; if(ump.find(su)!=ump.end() && ump[su] < mid) { num++; tail = mid; mid = ump[su]; } else { break; } if(mid == 0) break; } mx = max(mx, num); } } if(mx==2) return 0; return mx; } };

官方题解的动态规划方式

class Solution { public: unordered_map<int, int> ump; int lenLongestFibSubseq(vector<int>& arr) { for(int i = 0; i < arr.size(); i++) { ump[arr[i]] = i; } int n = arr.size(), mx = INT_MIN, su; vector<vector<int>> dp(n, vector<int>(n)); for(int i = 2; i < n; i++) { for(int j = i - 1; j > 0; j--) { su = arr[i] - arr[j]; if(ump.find(su)!= ump.end() && ump[su] < j) { dp[j][i] = max(dp[ump[su]][j] + 1, 3); } mx = max(mx, dp[j][i]); } } if(mx==2) return 0; return mx; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 0:50:13

如何寻找无版权限制的摄影图片?2026年10个优质网站测评!

在2026年的今天&#xff0c;数字内容创作如火如荼&#xff0c;许多设计师、博主和营销人员都在为寻找高质量且无版权限制的摄影图片而发愁。这类图片可以避免法律纠纷&#xff0c;节省成本&#xff0c;并提升作品的专业度。无版权限制摄影图片的获取并不复杂&#xff0c;关键在…

作者头像 李华
网站建设 2026/4/17 7:14:05

Android下单元测试实践——测试框架简介

前言 测试代码的写法可以归纳为三部分 第一部分&#xff1a; 准备测试数据和定义mock行为 第二部分&#xff1a; 调用真实的函数 第三部分&#xff1a; 调用验证函数进行结果的验证 Junit4 在模块的test路径下编写测试案例。在类中使用Test注解&#xff0c;就可以告诉Jun…

作者头像 李华
网站建设 2026/4/9 11:45:01

JDK动态代理与CGLIB实现的区别

JDK动态代理与CGLIB实现的区别 章节目录 文章目录JDK动态代理与CGLIB实现的区别JDK动态代理和CGLIB是Java中常用的两种代理技术&#xff0c;它们在实现原理和使用方式上有一些区别。JDK动态代理是基于接口的代理技术&#xff0c;要求目标类必须实现一个或多个接口。它使用java…

作者头像 李华
网站建设 2026/4/8 22:13:36

基于STM32的PM2.5监控系统的设计与实现

二、硬件系统的设计 2.1 整体设计的方向 基于单片机STM32的PM2.5监控系统主要由五个基本的部分设计组成&#xff0c;它们五个组成部分为&#xff1a;基于单片机的控制部分的电路&#xff0c;警报部分的电路&#xff0c;按钮信号处理的部分&#xff0c;液晶显示屏部分和基于PM2.…

作者头像 李华
网站建设 2026/4/16 12:55:57

基于单片机的密码锁设计

第二章 系统方案的设计 2.1 设计说明 确定好明确的设计方案对于整个系统的设计是非常重要的&#xff0c;秉持着严格遵循单片机设计相关原则&#xff0c;尽可能选择合适的方案进行设计&#xff0c;合理的方案对整个系统的综合性调试有帮助。 设计的基于51单片机的多功能数字密码…

作者头像 李华
网站建设 2026/4/17 5:18:30

基于单片机的药品分拣设计

2 系统设计方案 2.1 系统原理 药品分拣系统是医疗机构必备设备之一&#xff0c;它可以提高药品分配的效率和准确性&#xff0c;从而更好地保障患者用药安全和治疗效果。本文基于STM32单片机进行开发&#xff0c;使用OLED和Drivic双显示屏实现药品图片的双屏显示&#xff0c;同…

作者头像 李华