Longest Arithmetic Subsequence of Given Difference LeetCode solution in C++
1class Solution {2public:3int longestSubsequence(vector<int> &arr, int difference) {4int n = arr.size();56unordered_map<int, int> mp;7multiset<int> s;8int ans = 1;910for (int i = 0; i < n; i++) {11int req = arr[i] - difference;12auto it = s.find(req);13s.insert(arr[i]);1415if (it == s.end()) {16continue;17} else {18mp[arr[i]] = mp[req] + 1;19ans = max(ans, mp[arr[i]] + 1);20}21}2223return ans;24}25};