LeetCode1218

    技术2022-08-01  73

    class Solution { public int longestSubsequence(int[] arr, int difference) { // int[] dp = new int[arr.length]; // //base // Arrays.fill(dp,1); // int ans = 0; // //状态转移 // for(int i = 0;i<arr.length;i++){ // for(int j = 0;j < i;j++){ // if(arr[i]-arr[j]==difference){ // dp[i] = Math.max(dp[j] + 1,dp[i]); // } // } // ans = Math.max(ans,dp[i]); // } // return ans; int[] dp = new int[arr.length]; Map<Integer,Integer> map = new HashMap<>(); int ret = 0; for(int i = 0; i < arr.length; i++){ dp[i] = map.getOrDefault(arr[i]-difference,0)+1; map.put(arr[i], dp[i]); ret = Math.max(dp[i], ret); } return ret; } }

     

    Processed: 0.009, SQL: 9