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.

    由于算法复杂度是O(n) ,所以不能直接排序。可以把数组存入hashset,考察每个元素的相邻元素是否在set内,把考察过的元素删除。

     1 public class Solution {
     2     public int longestConsecutive(int[] num) {
     3             HashSet<Integer> hashSet;
     4         
     5             if (num.length==0) {
     6                 return 0;
     7             }
     8             if (num.length==1) {
     9                 return 1;
    10             }
    11             hashSet=new HashSet<>();
    12             
    13             for (int i = 0; i < num.length; i++) {
    14                 hashSet.add(num[i]);
    15             }
    16             int res=1;
    17             for (int i = 0; i < num.length; i++) {
    18                 int tmplen=1;
    19                 int tmpnum=num[i]+1;
    20                 while (hashSet.contains(tmpnum)) {
    21                     tmplen++;
    22                     hashSet.remove(tmpnum);
    23                     tmpnum++;
    24                 }
    25                 tmpnum=num[i]-1;
    26                 while (hashSet.contains(tmpnum)) {
    27                     tmplen++;
    28                     hashSet.remove(tmpnum);
    29                     tmpnum--;
    30                 }
    31                 if (tmplen>res) {
    32                     res=tmplen;
    33                 }
    34                 
    35             }
    36             return res;
    37     }
    38 }
  • 相关阅读:
    SQL server查询笔记
    thinkphp ajax无刷新上传头像
    JSTL
    EL表达式
    jBox 弹框内容交互
    网页可读不可写
    readonly与disable的区别
    vuex 的使用
    页面向上滚动
    按照数组中的对象属性进行排序
  • 原文地址:https://www.cnblogs.com/birdhack/p/3967082.html
Copyright © 2011-2022 走看看