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;
  }
}
Copyright © rootwhois.cn 2021-2022 all right reserved,powered by GitbookFile Modify: 2023-03-05 10:55:51

results matching ""

    No results matching ""