马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
标题:
剖析:
代码: - public int lenLongestFibSubseq(int[] arr) {
- int n = arr.length;
- int ret = 2;
- Map<Integer,Integer> hash = new HashMap<>();
- int[][] dp = new int[n][n];
- //把元素和下标绑定起来,便于找下标K
- for(int i = 0; i < n; i++)
- hash.put(arr[i],i);
- for(int i = 0; i < n; i++)
- for(int j = 0; j < n; j++)
- dp[i][j] = 2;
- for(int j = 2; j < n; j++){//固定第二个数
- for(int i = 1; i < j; i++){//固定倒数第二个数
- int a = arr[j]-arr[i];
- int b = arr[i];
- if(a < b && hash.containsKey(a)) dp[i][j] = dp[hash.get(a)][i]+1;
-
- ret = Math.max(ret, dp[i][j]);
- }
- }
- return ret < 3 ? 0 : ret;
- }
复制代码 |