說明
-
和諧數組是指一個數組里元素的最大值和最小值之間的差別正好是1。
-
現在,給定一個整數數組,你需要在所有可能的子序列中找到最長的和諧子序列的長度。
-
輸入: [1,3,2,2,5,2,3,7]
輸出: 5
原因: 最長的和諧數組是:[3,2,2,2,3].
思路
- 創建一個map用于統計數組中的值,及值出現的次數
- 創建一個max,用來保存出現的最大次數
- 遍歷map,在map中尋找比當前值大1的值出現的次數
var findLHS = function (nums) {let map = new Map();for (let i = 0; i < nums.length; i++) {if (map.has(nums[i])) {map.set(nums[i], map.get(nums[i]) + 1)} else {map.set(nums[i], 1);}}let max = 0;for(let [key , value] of map){if(map.has(key +1)){max = Math.max(max, map.get(key +1) + map.get(key));}}return max
};
總結
- map的初始化
const map = new Map()
- 判斷map中是否含有某個元素
map.has(xxx)
- 獲取map的值
map.get(xxx)
- 設置map的值
map.set(xxx, yyy)
- map的遍歷
for(let [key, value] of map) { xxx }