zoukankan      html  css  js  c++  java
  • Leetcode-Longest Consecutive Sequence

    Given an unsorted array of integers, find the length of the longest consecutive elements sequence.

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

    Your algorithm should run in O(n) complexity.

    Analysis:

    We use hash table to store each element. For element, we search the value smaller and larger than it in the table and find out the current max len. We mark every visited element.

    Solution:

     1 public class Solution {
     2     public int longestConsecutive(int[] num) {
     3         if (num.length==0 || num.length==1) return num.length;
     4 
     5         Map<Integer,Boolean> map = new HashMap<Integer,Boolean>();
     6         for (int i=0;i<num.length;i++)
     7             map.put(num[i],false);
     8 
     9         int maxLen = 0;
    10         for (int i=0;i<num.length;i++){
    11             int curVal = num[i];
    12             if (map.get(curVal)) continue;
    13 
    14             int curLen = 1;
    15             map.put(curVal,true);
    16             int val = curVal-1;
    17             while (map.containsKey(val) && !map.get(val)){
    18                 curLen++;
    19                 map.put(val,true);
    20                 val--;
    21             }
    22             val = curVal+1;
    23             while (map.containsKey(val) && !map.get(val)){
    24                 curLen++;
    25                 map.put(val,true);
    26                 val++;
    27             }
    28             if (maxLen<curLen) maxLen = curLen;
    29          }
    30 
    31          return maxLen;
    32     }
    33 }
  • 相关阅读:
    Python之socket
    Python之创建low版的线程池
    Python之面向对象及相关
    Python之面向对象(进阶篇)
    Python之面向对象(初级篇)
    Python之线程与进程
    python中执行父类的构造方法
    python之反射
    记一次有趣的米筐经历~
    算法第四章作业
  • 原文地址:https://www.cnblogs.com/lishiblog/p/4117771.html
Copyright © 2011-2022 走看看