想法:dp+哈希表,双重遍历的dp会TLE,所以我们使用map存储我们遍历过的数字,后面遍历的时候就只用O(n)的时间复杂度就行了
/**
* @param {number[]} arr
* @param {number} difference
* @return {number}
*/
var longestSubsequence = function(arr, difference) {
let map = {};
let max = 1;
for(let item of arr) {
map[item] = (map[item - difference] || 0) + 1; //很棒的一段代码
max = Math.max(map[item], max);
}
return max;
};
map[item] = (map[item - difference] || 0) + 1; //很棒的一段代码
这段代码需要好好品尝,因为实在是太妙了。