2023-07-14 Daily Challenge
Today I have done leetcode's July LeetCoding Challenge with cpp
.
July LeetCoding Challenge 14
Description
Longest Arithmetic Subsequence of Given Difference
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.
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 <= 105
-104 <= arr[i], difference <= 104
Solution
class Solution {
public:
int longestSubsequence(vector<int>& arr, int difference) {
map<int, int> existSubsequence;
int answer = 0;
for(auto i : arr) {
existSubsequence[i] = max(existSubsequence[i], existSubsequence[i - difference] + 1);
answer = max(answer, existSubsequence[i]);
}
return answer;
}
};
// Accepted
// 39/39 cases passed (359 ms)
// Your runtime beats 5.03 % of cpp submissions
// Your memory usage beats 10.76 % of cpp submissions (57.6 MB)