题目给定一个未排序的整数数组 nums 找出数字连续的最长序列不要求序列元素在原数组中连续的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。示例 1输入nums [100,4,200,1,3,2]输出4解释最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。示例 2输入nums [0,3,7,2,5,8,4,6,0,1]输出9示例 3输入nums [1,0,1,2]输出3提示0 nums.length 105-109 nums[i] 109思路找数组的head。先把所有的数字放到hash set然后遍历set不遍历nums是因为set已经去重了找set里面是否有num-1如果没有代表num已经是head了然后循环查找是否有num返回最大的长度即可。代码classSolution{public:intlongestConsecutive(vectorintnums){unordered_setintmp;intres0;for(intnum:nums){mp.insert(num);}for(intnum:mp){intcnt0;if(!mp.count(num-1)){while(mp.count(num)){cnt;}}resmax(cnt,res);}returnres;}};感谢 感谢华南溜达虎 力扣blind 75
128 最长连续序列
题目给定一个未排序的整数数组 nums 找出数字连续的最长序列不要求序列元素在原数组中连续的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。示例 1输入nums [100,4,200,1,3,2]输出4解释最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。示例 2输入nums [0,3,7,2,5,8,4,6,0,1]输出9示例 3输入nums [1,0,1,2]输出3提示0 nums.length 105-109 nums[i] 109思路找数组的head。先把所有的数字放到hash set然后遍历set不遍历nums是因为set已经去重了找set里面是否有num-1如果没有代表num已经是head了然后循环查找是否有num返回最大的长度即可。代码classSolution{public:intlongestConsecutive(vectorintnums){unordered_setintmp;intres0;for(intnum:nums){mp.insert(num);}for(intnum:mp){intcnt0;if(!mp.count(num-1)){while(mp.count(num)){cnt;}}resmax(cnt,res);}returnres;}};感谢 感谢华南溜达虎 力扣blind 75