面试:哈希:最长连续子串
来源:互联网 发布:软件开发助理工程师 编辑:程序博客网 时间:2024/06/07 19:19
题目
给出一个无序的整形数组,找出最长连续子串的长度。线性时间复杂度
{8,1,9,3,2,4}———-连续子串—–{1,2,3,4}—-长度是4
算法
- 记录数字和其所在的连续数组的长度
- 插入数字
- 判断其前一个数和后一个数,是否在hash里
- 如果存在,更新连续数组长度
O(n)
import java.util.*;class Solution{ public int findLongestConsequence(int[] A){ HashMap<Integer,Integer> map=new HashMap<Integer,Integer>(); int max=1; for(int i:A){ if(map.containsKey(i)) continue;//忽略重复值 map.put(i,1); //添加(key,value) if(map.containsKey(i-1)){ //连接左边的元素 max=Math.max(max, merge(map,i-1,i)); } if(map.containsKey(i+1)) //连接右边 max=Math.max(max,merge(map,i,i+1)); } return max; } private int merge(HashMap<Integer,Integer> map,int left,int right){ int upper=right+map.get(right)-1; //最右边数 int lower=left-map.get(left)+1;//最左边数 int len=upper-lower+1; map.put(upper,len); map.put(lower,len); }}
0 0
- 面试:哈希:最长连续子串
- 最长连续子串和
- 最长连续回文子串
- 最长连续数字子串
- 最长公共连续子串
- 最长公共连续子串
- 最长不连续子串
- 最长连续公共子串
- 面试:哈希:最长不同字符子串
- 微软等面试100题筛选答案-25-求最长连续数字子串
- 最长公共子串与最长连续子串算法
- 字符串中连续出现最长子串
- 字符串中连续最长重复子串
- 最长连续公共子串算法
- 最长连续公共子串算法
- hdu3530(最长连续子串+单调队列)
- 最长公共子串(连续)问题
- 最长公共子串(连续)问题
- 博弈论
- uva11400 lighting system design
- PDF复制乱码 -- 原因及解决方案
- "阻塞--中断"驱动模型在i2c在子系统、uart驱动、spi子系统中的实现
- SICP练习题1.11
- 面试:哈希:最长连续子串
- Android导入数据库
- c++ 异常处理
- OpenGLES—API(gl2.h)
- 九度OJ 1003
- Codeforces Round #354 (Div. 2) Pyramid of Glasses
- Java多线程 之 Thread子类 join方法(五)
- Android是选择自学还是选择培训?
- 三极管工作原理分析,精辟、透彻,看后你就懂