1218. Longest Arithmetic Subsequence of Given Difference
1. Question
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
.
A subsequence is a sequence that can be derived from arr
by deleting some or no elements without changing the order of the remaining elements.
2. Examples
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].
3. Constraints
- 1 <= arr.length <= 105
- -104 <= arr[i], difference <= 104
4. References
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-arithmetic-subsequence-of-given-difference 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
5. Solutions
class Solution {
public int longestSubsequence(int[] arr, int difference) {
HashMap<Integer, Integer> map = new HashMap<>();
int max = 0;
for(int i = 0; i < arr.length; i++) {
map.put(arr[i] , map.getOrDefault(arr[i] - difference, 0) + 1);
max = Math.max(max, map.get(arr[i]));
}
return max;
}
}