leetcode128.最長連續序列
阿新 • • 發佈:2021-11-24
leetcode128.最長連續序列
題目
給定一個未排序的整數陣列 nums ,找出數字連續的最長序列(不要求序列元素在原陣列中連續)的長度。
請你設計並實現時間複雜度為 O(n) 的演算法解決此問題。
用例
輸入:nums = [100,4,200,1,3,2]
輸出:4
解釋:最長數字連續序列是 [1, 2, 3, 4]。它的長度為 4。
輸入:nums = [0,3,7,2,5,8,4,6,0,1]
輸出:9
求解
/** * @param {number[]} nums * @return {number} */ var longestConsecutive = function(nums) { let res = 0 //建立雜湊表 let hash = new Object() for(let i=0;i<nums.length;i++){ if(!hash[nums[i]]){ let left_length = hash[nums[i]-1] || 0 let right_length = hash[nums[i]+1] || 0 let new_length = left_length+right_length+1 hash[nums[i]]=new_length res = Math.max(new_length,res) hash[nums[i]-left_length]=new_length hash[nums[i]+right_length]=new_length } } return res };