Longest Consecutive Sequence
2016-03-09 14:06
363 查看
给定一个整形数组,求数组中最长的连续串的长度。如果数组是[5,7,9,1,1,2,3,3],结果为3。
解题思路:
1. 利用hashMap对数组每个元素进行散列。
2. 对于数组的某个元素num1,在hashMap中向前、向后求其相邻的数是否在hashMap中,在的话长度加1,并把该元素删除
3. 因为是向前向后两头求其相邻的元素,所以即使num1在中间也无所谓。
Java代码:public class Solution { public int longestConsecutive(int[] nums) { if (nums.length == 0) return 0; //对数组进行散列 Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (int i : nums) { map.put(i, i); } int maxCount = 0; //最终的最大长度 for (int curNum : nums) { int curCount = 1; //向后查找 int backPointer = curNum - 1; while (map.containsKey(backPointer)) { curCount++; map.remove(backPointer); backPointer--; } //向前查找 int aheadPointer = curNum + 1; while (map.containsKey(aheadPointer)) { curCount++; map.remove(aheadPointer); aheadPointer++; } if (maxCount < curCount) maxCount = curCount; } return maxCount; } }
相关文章推荐
- c语言实现hashmap(转载)
- 解析WeakHashMap与HashMap的区别详解
- 基于Java HashMap的死循环的启示详解
- Java中HashMap和Hashtable的区别浅析
- 重载toString实现JS HashMap分析
- Android中实现HashMap排序的方法
- 举例详解Java编程中HashMap的初始化以及遍历的方法
- Java8 HashMap的实现原理分析
- 深入理解Java中的HashMap的实现机制
- 深入解析java HashMap实现原理
- java HashMap的keyset实例
- Java中Hashtable类与HashMap类的区别详解
- 浅析java中ArrayList与Vector的区别以及HashMap与Hashtable的区别
- java中Hashtable和HashMap的区别分析
- JAVA HashMap详细介绍和示例
- Java HashMap的工作原理
- Java中HashMap和Hashtable及HashSet的区别
- 浅析Java中Map与HashMap,Hashtable,HashSet的区别
- Java中HashMap和TreeMap的区别深入理解
- JS自定义一个Map类