解题思路:
这是一道经典的运用Map来进行的动态规划题目。要想知道i是否在等差数列上,就要知道i - different是否在等差数列上,这就好办了,直接用map存储数,初始值都是0,每个数都从1开始更新,代码如下:
class Solution {
public:
int longestSubsequence(vector<int>& arr, int difference) {
unordered_map<int, int> mp;
int maxLen = 1;
for(int& a : arr) {
mp[a] = mp[a - difference] + 1;
maxLen = max(maxLen, mp[a]);
}
return maxLen;
}
};