暴力无脑: 排序+去重+双指针

数组中的最长连续子序列

https://www.nowcoder.com/practice/eac1c953170243338f941959146ac4bf

class Solution {
  public:

    int MLS(vector<int>& arr) {
        // write code here

        sort(arr.begin(), arr.end());

        auto it = unique(arr.begin(), arr.end());
        arr.erase(it, arr.end());
	  
	    //注意一定要先排序再去重,不然达不到去重目的
	  	//不要问我怎么知道,卡半天了,有兴趣可以自己试验一下

        int right = 1, left = 0;
        int sz = arr.size();
        if (sz == 1)
            return 1;
        int len = 1;
        while (right < sz) {
            if (arr[right - 1] + 1 == arr[right])
                len = max(len, right - left + 1);//更新答案
			else 
                left = right;//更新left
		  
            right++;
        }
        return len;
    }
};

全部评论

相关推荐

03-10 11:23
门头沟学院 Java
鹿LF:计算机面试就跟数学题一样,没什么实际价值,但只能这么筛选,本质是考察你的努力,智力和学习能力
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务