[leetcode]873. 最长的斐波那契子序列的长度

在这里插入图片描述
在这里插入图片描述

Code 1.0

class Solution {
public:
    int lenLongestFibSubseq(vector<int>& A) {
        
        int res = 2;
        for ( int i = 0 ; i < A.size()-2 ; i++ ){
             for ( int j = i+1 ; j < A.size()-1 ; j++ ){
                 int tes = 2;
                 int sum = A[i]+A[j];   
                 int k = j+1;
                 int pre = A[j];
                 while ( find (A.begin()+j,A.end(),sum) != A.end() ){
                     tes++;
                     sum = sum+pre;
                     pre = sum-pre;
                 }
                 
                 res = max ( res , tes );
             }
         }
        
        return res == 2 ? 0:res;
    }
};

问题

看了解法,简单循环可以AC,但写出来疯狂超时
添加vector转换为set查找后即可

Code 2.0(AC)

class Solution {
public:
    int lenLongestFibSubseq(vector<int>& A) {
        set<int> aset(A.begin(), A.end());
        int res = 2;
        for ( int i = 0 ; i < A.size()-2 ; i++ ){
             for ( int j = i+1 ; j < A.size()-1 ; j++ ){
                 int tes = 2;
                 int sum = A[i]+A[j];   
                 int k = j+1;
                 int pre = A[j];
                 while ( aset.find (sum) != aset.end() ){
                     tes++;
                     sum = sum+pre;
                     pre = sum-pre;
                 }
                 
                 res = max ( res , tes );
             }
         }
        
        return res == 2 ? 0:res;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值