1. 知识点总结
题目 | 难度 | 知识点 |
---|---|---|
最长连续序列 | 🐸(🐸如果要控制到o(n)的话,私以为比较难) | 数组排序 |
只出现一次的数字 | 🐸 | 数组 |
2. 分题题解
2.1 最长连续序列
不考虑降低复杂度为O(N)的话,其实不难,但是一次性写对……不容易,细节是nums[i]==nums[i-1]如何处理
class Solution {
public:
int longestConsecutive(vector<int>& nums) {
int len=nums.size();
if(len==0){
return 0;
}
//设计出O(n)?
sort(nums.begin(),nums.end());
int ans=1;
int temp=1;
for(int i=1;i<len;i++){
//cout<<nums[i]<<" ";
if(nums[i]==nums[i-1]+1){
temp+=1;
}else if(nums[i]==nums[i-1]){
continue;
}else{
ans=max(ans,temp);
temp=1;
}
}
ans=max(ans,temp);
return ans;
}
};
2.2 只出现一次的数字
emm为了降低空间复杂度,但是……时间浪费掉了,哇哇,好菜实锤
class Solution {
public:
int singleNumber(vector<int>& nums) {
//找出唯一
int len=nums.size();
int ans;
for(int i=0;i<len;i++){
bool flag=false;
for(int j=0;j<len;j++){
if(i==j)continue;
if(nums[i]==nums[j]){
flag=true;
break;
}
}
if(!flag){
ans=nums[i];
break;
}
}
return ans;
}
};
3. 参考资料
无