数组中最长可连续值的个数

2018-04-02  本文已影响5人  qpan

For example, Given [100, 4, 200, 1, 3, 2], The longest consecutive elements sequence is [1, 2, 3, 4]. Return its length: 4.

/**
     * o(n)复杂度
     * @param arrays
     * @return
     */
   // [100, 4, 200, 1, 3, 2]--> 1,2,3,4   return 4
    public static int longestConsecutive(int[] arrays){
        final HashSet<Integer> mySet=new HashSet<>();
        for (int i:arrays){
            mySet.add(i);
        }
        int longest=0;
        for (int value:arrays){
            int length=1;
            for (int i=value-1;mySet.contains(i);--i){
                mySet.remove(i);
                ++length;
            }
            for (int i=value+1;mySet.contains(i);++i){
                mySet.remove(i);
                ++length;
            }
            longest=Math.max(longest,length);
        }
        return longest;
    }

上一篇 下一篇

猜你喜欢

热点阅读