算法康复训练19


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. 参考资料


文章作者: Gao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Gao !
评论
  目录