Longest Consecutive Sequence(最长连续序列)
2014-03-05 20:08
344 查看
题目原型:
Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
For example,
Given
The longest consecutive elements sequence is
Your algorithm should run in O(n) complexity.
基本思路:
题目的意思就是给你一个数组,让你找出数组中的最长连续序列,顺序可变。这个题可以采取利用空间换取时间的算法,先将这个数组的值放入hashset中,然后遍历数组,当取得数组中的一个值时,分别从左边和右边算出他的连续值,最后查询这个连续词是否在hashset中,在的话就将length+1,否则更新最大的length。如,对于数组中的第二个数4,向左边查找3,2,1、、、、是否在hashset中,然后查找5,6,7、、、是否在hashset中,直到找不到时更新最大的length值。
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.
基本思路:
题目的意思就是给你一个数组,让你找出数组中的最长连续序列,顺序可变。这个题可以采取利用空间换取时间的算法,先将这个数组的值放入hashset中,然后遍历数组,当取得数组中的一个值时,分别从左边和右边算出他的连续值,最后查询这个连续词是否在hashset中,在的话就将length+1,否则更新最大的length。如,对于数组中的第二个数4,向左边查找3,2,1、、、、是否在hashset中,然后查找5,6,7、、、是否在hashset中,直到找不到时更新最大的length值。
public int longestConsecutive(int[] num) { int max = 0; int sum = 0; if(num.length==0) return 0; Set<Integer> set = new HashSet<Integer>(); int i = num.length-1; while(i>=0) { set.add(num[i]); i--; } for(i = 0;i<num.length;i++) { sum = 0; if(set.contains(num[i])) { sum++; set.remove(num[i]); int number = num[i]; //查找左边 while(true) { number--; if(set.contains(number)) { set.remove(number); sum++; } else break; } number = num[i]; //查找右边 while(true) { number++; if(set.contains(number)) { set.remove(number); sum++; } else break; } max = max>sum?max:sum; } } return max; }
相关文章推荐
- leetcode 最长连续序列 longest consecutive sequence
- [LeetCode] Binary Tree Longest Consecutive Sequence II 二叉树最长连续序列之二
- 128.LeetCode Longest Consecutive Sequence(hard)[数组 排序 最长连续增长子序列]
- [LeetCode] Binary Tree Longest Consecutive Sequence II 二叉树最长连续序列之二
- LeetCode--Longest Consecutive Sequence(最长连续序列)Python
- [LeetCode] Binary Tree Longest Consecutive Sequence 二叉树最长连续序列
- *[Lintcode]Longest Consecutive Sequence最长连续序列
- leetcode 最长连续序列 longest consecutive sequence
- [LeetCode] Longest Consecutive Sequence 求最长连续序列
- [LintCode] 619 Binary Tree Longest Consecutive Sequence III 二叉树最长连续序列 III
- leet-longest consecutive sequence length(最长连续序列长度)
- 在无序序列中找出最长的连续序列 Longest Consecutive Sequence
- longest-consecutive-sequence,数组中最长的连续序列
- 一个无序整数数组中找到最长连续序列(Longest Consecutive Sequence)和两个元素使得相差最小
- 数组中最长的连续序列(longest consecutive sequence)
- LeetCode | Longest Consecutive Sequence(最长连续序列)
- [LeetCode 128] - 最长连续序列(Longest Consecutive Sequence)
- 求数组中最长的连续序列(Longest Consecutive Sequence )
- LeetCode(Longest Consecutive Sequence ) 最长连续序列
- Longest Consecutive Sequence (最长连续序列) 【面试算法leetcode】