leetcode----Longest Consecutive Sequence
来源:互联网 发布:蓝牙耳机在淘宝属于 编辑:程序博客网 时间:2024/05/01 20:49
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) 排序中时间复杂度基本上都是nlog(n)或者n*n 最快的基数排序符合 但是 基数排序要知道数组中的数字有几位数组成的。题目中不具备这样的条件 我就思考了半天考虑 用图和hash表的方式直接实现查找连续字数组。数组中数据要想连续 你拿到一个数据必须具备以下两个条件 1.数组中存在比这个数据大一的数据,2.数组中存在比这个数据小一的数字 用hashSet将数组中的数字存起来 随机找到某个数据查找上面的两个条件 如果满足其中一个 就以获得的新数据继续找 反正最终就是按照某个数据向数据的相邻两边找。说的不清楚 直接看代码吧。。。。
public class Solution { //最终复杂度是2*n public int longestConsecutive(int[] num) { int key = 1;//总的计数器 if(num == null||num.length==0) return 0; HashSet<Integer> set = new HashSet<Integer>(); for(int i = 0;i<num.length;i++) set.add(num[i]); while(!set.isEmpty()){ int kk = 1;//某个数据的计数器 因为随机取一个数 之后就要马上在Set里面删掉所以计数器初始化为1 Iterator iter = set.iterator(); int m = (Integer)iter.next(); set.remove(m); int k = m+1;//向右查找 while(set.contains(k)){ set.remove(k); kk++; k++; } k=m-1;//想左查找 while(set.contains(k)){ set.remove(k); kk++; k--; } if(kk>key) key=kk; } return key; }}体会就是 做算法 要好好利用 某种语言本身的数据结构 多语言工具本身的数据结构进行编程。
0 0
- Leetcode : Longest Consecutive Sequence
- [Leetcode] Longest Consecutive Sequence
- [leetcode] longest consecutive sequence
- 【leetcode】Longest Consecutive Sequence
- LeetCode - Longest Consecutive Sequence
- [LeetCode]Longest Consecutive Sequence
- leetcode:Longest Consecutive Sequence
- [Leetcode]Longest Consecutive Sequence
- [leetcode]Longest Consecutive Sequence
- leetcode Longest Consecutive Sequence
- Leetcode: Longest Consecutive Sequence
- LeetCode:Longest Consecutive Sequence
- [leetcode] Longest Consecutive Sequence
- LeetCode-Longest Consecutive Sequence
- LeetCode - Longest Consecutive Sequence
- [LeetCode] longest consecutive sequence
- LeetCode | Longest Consecutive Sequence
- [leetcode]Longest Consecutive Sequence
- c#之session
- 南方李锦记保健品十问 [转]
- 杨辉三角
- cisco S3750交换机配置VLAN
- linux中echo命令向一个文件写入内容
- leetcode----Longest Consecutive Sequence
- 这是一个实现在光照下的机器人手臂的动作交互程序
- Raspberry pi,一个好玩的派:第七季 Raspbmc(上)
- IOS文件管理
- Android开发者必须深入学习的10个应用开源项目
- IOS AFNetworking2.0 问题
- IK分词源码讲解(一)-初始篇
- 利用Date对象编写程序,判断并输出今天是开学的第几周,星期几。
- Android TextView内容过长加省略号