最长的斐波那契子序列的长度【动态规划解决】

最长的斐波那契子序列暴力破解请移步-> 暴力破解法

//动态规划
class Solution {
   
    public int lenLongestFibSubseq(int[] arr) {
   
        //使用map集合来存储数组元素以便于更快的找到值所对应的下标
        Map<Integer, Integer> indices = new HashMap<Integer, Integer>();
        int n = arr.length;
        for (int i = 0; i < n; i++) {
   
             //这里将数组arr元素的值当作键
            indices.put(arr[i], i);
        }
        //二维数组dp用来存放以数j和数i结尾的数列长度
        int[][] dp = new int[n][n]; 
        int ans = 0;
        //arr[k] +  arr[j] = arr[i]
        //来寻找arr[i]这个数
        for (int i = 2; i < n; i++) {
    
            //从i这个位置依次往前找,arr[j] * 2 > arr[i]:因为arr[j] 之前的数arr[k]一定比arr[j]小,
            //所以两个arr[j]不能等于arr[i]时,arr[k] + arr[j] 一定不会等于arr[i]
            for (int j = i - 1; j >= 0 && arr[j] * 2 > arr[i]; j--) {
    
                //从集合indices中获取arr[k]值是否存在如果存在则输出它的下标,不存在则输出-1
                int k = indices.getOrDefault(arr[i] - arr[j], -1); 
                if (k >= 0) {
   
                    存在时则直接就赋值,因为数组dp初始值为0,所以要判断
                    dp[j][i] = Math.max(dp[k][j] + 1, 3); 
                }
                ans = Math.max(ans, dp[j][i]);
            }
        }
        return ans;
    }
}

相关推荐

  1. 序列长度动态规划解决

    2023-12-15 02:24:01       61 阅读
  2. 力扣题解(序列长度

    2023-12-15 02:24:01       28 阅读
  3. 【算法】【动规】序列长度

    2023-12-15 02:24:01       72 阅读
  4. 动态规划01-类型一

    2023-12-15 02:24:01       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-15 02:24:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-15 02:24:01       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-15 02:24:01       82 阅读
  4. Python语言-面向对象

    2023-12-15 02:24:01       91 阅读

热门阅读

  1. UDP网络编程其他相关事项

    2023-12-15 02:24:01       53 阅读
  2. Windows10下MySQL5.7.31解压版安装与卸载

    2023-12-15 02:24:01       66 阅读
  3. not exists用法

    2023-12-15 02:24:01       58 阅读
  4. vue表单输入绑定

    2023-12-15 02:24:01       58 阅读
  5. Scala学习二:访问修饰符/运算符

    2023-12-15 02:24:01       50 阅读
  6. 什么是PHPUnit?如何进行单元测试?

    2023-12-15 02:24:01       61 阅读
  7. Threejs之相机基础

    2023-12-15 02:24:01       73 阅读
  8. sql事务

    sql事务

    2023-12-15 02:24:01      56 阅读
  9. GitHub入门介绍

    2023-12-15 02:24:01       53 阅读
  10. 定时器Timer、多线程下的单例模式

    2023-12-15 02:24:01       58 阅读
  11. k8s-1.24.0版本部署

    2023-12-15 02:24:01       52 阅读
  12. Spring实战第6版第8章 OAuth2 客户端跑不起来

    2023-12-15 02:24:01       66 阅读