百度网站官网网址,如何做网站软件,网站分析报告范文,wordpress使用主题文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目
给定一个未排序的整数数组 nums #xff0c;找出数字连续的最长序列#xff08;不要求序列元素在原数组中连续#xff09;的长度。
请你设计并实现时间复杂度为 O(n) 的算法解决此问题。
示例
示例 1找出数字连续的最长序列不要求序列元素在原数组中连续的长度。
请你设计并实现时间复杂度为 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
提示
0 nums.length 10^5-10^9 nums[i] 10 ^9
2.解答思路
对vector对象可以直接使用sort函数进行排序 对排序后的nums进行一遍遍历 直接利用count记录最长长度 若满足nums[i1]nums[i]1直接count
注意若数组排序0 1 1 2 需要考虑这种情况 怎此增加判断是否nums[i1]nums[i] 若是则count值不变 否则令count1
3.实现代码
class Solution {
public:int longestConsecutive(vectorint nums) {int count1,nnums.size();int maxLen1;if(n0 || n1){//若为空则直接输出return n;}sort(nums.begin(),nums.end());//vector对象直接排序for(size_t i0;in-1;i){ if(nums[i1]nums[i]1){count;if(countmaxLen)maxLencount;}else if(nums[i]!nums[i1]){count1;}}return maxLen;}
};结果 4.总结
今天感冒了有点难受。题不算难应该还有更简单的哈希表法后续会补上。
自信坚持upup