publicintlongestSubsequence(int[] arr, int difference){ int len = arr.length; int ans = 1; for (int i = 0; i < len; i++) { int value = arr[i]; int cnt = 1; for (int j = i + 1; j < len; j++) { if (arr[j] == value + difference) { cnt++; value = arr[j]; } }
publicintlongestSubsequence(int[] arr, int difference){ int len = arr.length; int ans = 1; Map<Integer, Integer> dp = new HashMap<>(); for (int i = 0; i < len; i++) { dp.put(arr[i], dp.getOrDefault(arr[i] - difference, 0) + 1); ans = Math.max(ans, dp.get(arr[i])); }
return ans; }
复杂度分析:
时间复杂度:O(N),其中N是数组 nums 的长度。
空间复杂度:O(N),哈希表需要 O(N) 的空间。
All suggestions are welcome.
If you have any query or suggestion please comment below.
Please upvote👍 if you like💗 it. Thank you:-)