题目描述
给定一个未排序的整数服务器托管网数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。
请你设计并实现时间复杂度为 O(n) 的算法解决此问题。
出处
思路
此题可用带排序的哈希表,先构建哈希表,然后遍历哈希表,维护一个工作数和一个最长记录(初始值均为1),若相邻两个哈希表项的key相差1,则工作数++,否则视情况更新最长记录并把工作数归1。
value不起作用,题目无需考虑存在多个相同key的问题。
代码
class Solution {
public:
mapint, int> hash;
int longestC服务器托管网onsecutive(vectorint>& nums) {
if(nums.empty())
return 0;
for(auto i : nums){
hash[i] = i;
}
int max=1,tmp=1;
auto pre=hash.begin();
auto it=++hash.begin();
while(it!=hash.end()){
if(it->first==pre->first+1) {//若连续
tmp++;
if (tmp > max)
max = tmp;
}
else
tmp=1;
pre++;
it++;
}
return max;
}
};
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 初步上手Git软件及GitHub平台:基本操作方法
本文介绍Git软件与GitHub平台的基本内容、使用方法与应用场景等。 目录 1 初步介绍 2 使用方法 2.1 GitHub配置 2.2 Git配置 2.3 代码上传至GitHub 1 初步介绍 首先,什么是GitHub与Git?为什么我们要运用这些…