1
0
0

力扣hot3-最长连续序列

文章摘要
|

这道题我记得是哈希题,但是我看到这题的第一反应是借助排序,优点是代码逻辑极其简单,不容易写崩。不过坏处也很明显,排序算法的时间复杂度在O(nlogn),其瓶颈受限于Array.sort(),数据量大的时候该解法时间花费会明显变长,可能达不到要求的线性时间。哈希解法的时间复杂度应该是O(n),不过这里我先不写了(懒了)。

class Solution {
    public int longestConsecutive(int[] nums) {
        if(nums.length == 0) return 0;
        if(nums.length == 1) return 1;
        Array.sort(nums);
        int longestStreak = 1;
        int currentStreak = 1;
        for(int i = 1; i < nums.length; i++){
           if(nums[i] == nums[i-1] + 1){
             currentStreak++;
           }else if(nums[i] == nums[i]-1){
             continue;
           }else {
             longestStreak = Math.max(longestStreak,cyrrentStreak);
             currentStreak = 1;
           }
        }
        return longestStreak;
    }
}

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或者给予支持!

评论