Longest Arithmetic Subsequence of Given Difference

MediumArrayHash TableDynamic Programming

Solution

export function longestSubsequence(arr: number[], difference: number): number {
  const dp = new Map<number, number>();
 
  let answer = 1;
  for (const value of arr) {
    const prevValue = dp.get(value - difference) || 0;
    dp.set(value, prevValue + 1);
    answer = Math.max(answer, prevValue + 1);
  }
  return answer;
}