128. 最长连续序列
示例 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
提示:
0 <= nums.length <= 105
-109 <= nums[i] <= 109
这题可以用哈希表来快速排查连续字串
public int longestConsecutive(int[] nums) {unordered_set<int> num_set;for(const int& num:nums){num_set.insert(num);}int currentCount=0,currentNum=0,maxNum=0;for(const int& num:num_set){if(!num_set.count(num-1)){//这里主要是判断上一个数值在num_set中是否存在,不存在就将计数器currentCount从当前开始currentCount=1;currentNum=num;}while(num_set.count(currentNum+1)){//处理一直连续的最长字串currentCount++;currentNum++;}maxNum=max(maxNum,currentCount);}return maxNum;}
代码大概进行了解释,不理解的地方可以评论区留言~