1. 程式人生 > 實用技巧 >[程式設計題] lc:128. 最長連續序列]

[程式設計題] lc:128. 最長連續序列]

[程式設計題] lc:128. 最長連續序列

題目描述

輸入輸出

見上

思路

逐個的拿出陣列中的元素,把它假想為是最小的數。然後累加1且去雜湊表中找是否有,如果有count就加1、然後知道set中沒有的時候得出本次count的值。又一次拿出陣列中的第2個元素執行如上操作。最終返回一個最長的count值。

Java程式碼

import java.util.*;

class Solution {
    public static int longestConsecutive(int[] nums) {
        //極限值
        if(nums==null || nums.length==0){return 0;}

        int max = 1;
        int count = 1;

        //雜湊表
        HashSet<Integer> set = new HashSet<Integer>();
        for(int num : nums){
            set.add(num);
        }

        //遍歷陣列,拿出1個元素執行1輪操作,得出一個count值
        for(int i = 0;i<nums.length;i++){
            //預設拿出這次認為是最小的值
            int min = nums[i];
            //逐漸遞增得出連續遞增序列
            while(true){
                int cur = min+1;
                if(set.contains(cur)){
                    count++;
                    min = cur;

                }else{
                    max = count>max?count:max;
                    count=1;  //count迴歸1計數
                    break;
                }
            }
        }

        return max;
    }
}