1218. Longest Arithmetic Subsequence of Given Difference
Medium
Given an integer array arr
and an integer difference
, return the length of the longest subsequence in arr
which is an arithmetic sequence such that the difference between adjacent elements in the subsequence equals difference
.
Example 1:
Input: arr = [1,2,3,4], difference = 1 Output: 4 Explanation: The longest arithmetic subsequence is [1,2,3,4].
Example 2:
Input: arr = [1,3,5,7], difference = 1 Output: 1 Explanation: The longest arithmetic subsequence is any single element.
Example 3:
Input: arr = [1,5,7,8,5,3,4,2,1], difference = -2 Output: 4 Explanation: The longest arithmetic subsequence is [7,5,3,1].
Constraints:
1 <= arr.length <= 10^5
-10^4 <= arr[i], difference <= 10^4
1 2 3 4 5 6 7 8 9 10 11 12 | class Solution { public int longestSubsequence(int[] arr, int difference) { int n = arr.length, maxLen = 0;; Map<Integer, Integer> map = new HashMap<>();//longest len, last ele for(int i=0; i<n; ++i){ int l = map.getOrDefault(arr[i]-difference, 0) + 1; maxLen = Math.max(maxLen, l); map.put(arr[i], l); } return maxLen; } } |
No comments:
Post a Comment