873. Length of Longest Fibonacci Subsequence
题目求出最长的类似斐波那契数列,f[i]=f[i-1]+f[i-2],
首先可以通过两个循环,给定不同的f[0],f[1],然后挨个寻找f[i-1]+f[i-2];
难点在于寻找时我没有想到用集合的特性。
还有就是动态规划讲的是状态之间的转移关系,这种思想,不是每个题目都需要按部就班的使用转移方程。
class Solution {
public int lenLongestFibSubseq(int[] A) {
Set<Integer> set=new HashSet<Integer>();
for(int i=0;i<A.length;i++)
set.add(A[i]);
int res=0;
for(int i=0;i<A.length;i++){
for(int j=i+1;j<A.length;j++){
int a=A[i];
int b=A[j];
int cnt=2;
while(set.contains(a+b)){
cnt++;
b=a+b;
a=b-a;
}
res=Math.max(cnt,res);
}
}
return res<=2?0:res;
}
}