懒人读算法(四)-寻找最大连续值
来源:互联网 发布:国牌lolita淘宝店铺 编辑:程序博客网 时间:2024/06/15 12:30
趣味题
给一个没有排序的整数数组,寻找最大的连续值
如[100, 4, 200, 1, 3, 2] ,则最长的数组是[1, 2, 3, 4],返回值最大长度是4
答案:
public class Solution { public int longestConsecutive(int[] nums) { int res = 0; HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); for(int n : nums) {//遍历 if(!map.containsKey(n)) {//map里不存在n int left = (map.containsKey(n - 1)) ? map.get(n - 1) : 0;//左边的最大连续数值 int right = (map.containsKey(n + 1)) ? map.get(n + 1) : 0;//右边的最大连续值 int sum = left + right + 1;//最大连续值 map.put(n, sum);//当前值得最大连续值 res = Math.max(res, sum); map.put(n - left, sum);//更新当前值最左边连续值的值为sum map.put(n + right, sum);//更新最右边连续值为sum } //4 left =0 right =0 sum =1 //1 left=0 right=0 sum=1 //3 left=0 right=1 sum=2 map(4,2) //2 left=1 right=2 sum=4 map(2,4),map(1,4),map(4,4) else { continue; } } return res; }}
核心思路:遍历整个数组,并把结果放在map里key里,value是当前值左边和右边的最大连续值数加1
再更新当前值得最左边和最右边的值为sum
阅读全文
1 0
- 懒人读算法(四)-寻找最大连续值
- 懒人读算法(一)-寻找名人
- 懒人读算法(五)-求最大子数组
- 懒人读算法(七)-旋转矩阵
- Kadane算法(值最大的连续子数组)
- 贪心算法--寻找最大数(一)
- 贪心算法--寻找最大数(三)
- 算法---最大连续乘积
- 一、寻找最大连续子序列
- Java寻找最大连续子串和
- 寻找最大连续子串和
- 数组连续子序列的最大的和-四种算法,四种时间复杂度
- 数组连续子序列的最大的和;四种算法,四种时间复杂度
- 最大连续和算法分析
- 算法 | 最大连续子数组
- 最大连续区间和算法、
- 懒人读算法(三)-添加新区间
- 懒人读算法(九)-所有子集(有重复)
- Vue报错笔记(2):No 'Access-Control-Allow-Origin' header is present on the requested resource.
- 2017上海国际表面处理展览会会刊(参展商名录)
- javascript回调函数
- 文件系统读写--文件写过程代码分析
- 数据结构第七周项目1--建立顺序环形队列算法库
- 懒人读算法(四)-寻找最大连续值
- Ubuntu 16.04 安装 PyCharm-Python IDE
- 正则表达式(习题)
- 线形对象与平面相交
- 第四周 循环双链表应用
- 插入排序
- Linux ALSA声卡驱动之三:PCM设备的创建
- sql问题总结
- android常用框架集合