1. 解题思路
这一题思路上就是一个贪婪算法的思路。
我们从左往右考察,对于任意一个数,如果其恰好为前两个数的和,那么其就可以顺序构成斐波那契数列,对应的长度加一,否则就可以将其视为一个新的斐波那契数列的第二个元素。
由此,我们顺序遍历一轮数列即可得到最长的可组成的斐波那契数列的长度了。
2. 代码实现
给出python代码实现如下:
class Solution:
def longestSubarray(self, nums: List[int]) -> int:
n = len(nums)
ans, cnt, idx = 2, 2, 2
while idx < n:
if nums[idx] == nums[idx-1] + nums[idx-2]:
cnt += 1
else:
cnt = 2
ans = max(ans, cnt)
idx += 1
return ans
提交代码评测得到:耗时99ms,占用内存33.46MB。
LeetCode 3708 最长斐波那契子数组
3187

被折叠的 条评论
为什么被折叠?



