128. Longest Consecutive Sequence
来源:互联网 发布:青山大禹软件 编辑:程序博客网 时间:2024/05/29 02:22
转载自 http://algorithm.books.mafengshe.com/answer/128.html
128. 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.
题目翻译
给定一个未排序的整数数组,找到最长连续元素序列的长度。
例如,
给定[100, 4, 200, 1, 3, 2],
最长的连续元素序列是[1, 2, 3, 4]。返回长度:4。
您的算法应该以O(n)的复杂度运行。
解题方案
标签: Array
思路:这道题利用HashSet的唯一性解决,能使时间复杂度达到O(n)。首先先把所有num值放入HashSet,然后遍历整个数组,如果HashSet中存在该值,就先向下找到边界,找的同时把找到的值一个一个从set中删去,然后再向上找边界,同样要把找到的值都从set中删掉。所以每个元素最多会被遍历两边,时间复杂度为O(n)。
代码:
class Solution { public int longestConsecutive(int[] nums) { if(nums == null||nums.length == 0) return 0; HashSet<Integer> hs = new HashSet<Integer>(); for (int i = 0 ;i<nums.length; i++) hs.add(nums[i]); int max = 0; for(int i=0; i<nums.length; i++){ if(hs.contains(nums[i])){ int count = 1; hs.remove(nums[i]); int low = nums[i] - 1; while(hs.contains(low)){ hs.remove(low); low--; count++; } int high = nums[i] + 1; while(hs.contains(high)){ hs.remove(high); high++; count++; } max = Math.max(max, count); } } return max; }}
阅读全文
0 0
- 128.Longest Consecutive Sequence
- 128. Longest Consecutive Sequence
- 128. Longest Consecutive Sequence
- 128. Longest Consecutive Sequence
- 128. Longest Consecutive Sequence
- 128. Longest Consecutive Sequence
- 128. Longest Consecutive Sequence
- 128. Longest Consecutive Sequence
- 128. Longest Consecutive Sequence
- 128. Longest Consecutive Sequence
- 128. Longest Consecutive Sequence
- 128. Longest Consecutive Sequence
- 128. Longest Consecutive Sequence
- 128. Longest Consecutive Sequence
- 128. Longest Consecutive Sequence
- 128. Longest Consecutive Sequence
- 128. Longest Consecutive Sequence
- 128. Longest Consecutive Sequence
- 第四周 项目三 单链表应用 2.
- java学习之路
- 560. Subarray Sum Equals K
- 2017.9.24 虔诚的墓主人 思考记录
- Win32——edit控件的简单使用
- 128. Longest Consecutive Sequence
- java基础_设计模式_单例模式
- zookeeper for linux下载安装
- java面试题目01
- private 继承(effective C++ 条款40)
- 数据结构 第八章 排序
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛
- 最近的计划
- 阿里云服务器配置(二)