题解 | #数组中的最长连续子序列#

数组中的最长连续子序列

http://www.nowcoder.com/practice/eac1c953170243338f941959146ac4bf

一开始并没有想起来先用排序做,直接用的HashMap,解法比较通俗易懂
思路是遍历整个数组,当前值继承上一个连续的数+1,如果没找到上一个连续的值就设置为1
然后对下一个连续的值进行处理,如果之前保存的map中有下一个连续的值,则遍历每一个连续的值并且+1
最后输出map中最大的一个值

import java.util.*;


public class Solution {
    /**
     * max increasing subsequence
     * @param arr int整型一维数组 the array
     * @return int整型
     */
    public int MLS (int[] arr) {
        Map<Integer,Integer> map = new HashMap();
        int max = 0;
        for(int i = 0; i<arr.length; i++){
            int count = map.getOrDefault(arr[i]-1,0)+1;
            map.put(arr[i],count);
            int upper = arr[i]+1;
            while(map.containsKey(upper)){
                map.put(upper,++count);
                upper++;
            }
        }
        for(int i:map.keySet()){
            max = Math.max(max,map.get(i));
        }
        return max;
    }
}
全部评论

相关推荐

浪子陪都:简历最优秀的地方放到了后面,国奖,校级奖学金这些是最亮眼的。说明你跟同级别的学生不一样。 建议台灯这个,PCB布局布线这个词汇不专业,业内是PCB Layout,第二,单片机的板子一般不用考虑SI,PI 都是低速信号,只要遵循3W原则就好了。 单片机的项目太low了,技能这块,你要看一下BOSS直聘的招聘要求,按照别人的要求写,一些关键词可以增加你简历被检索到的概率。 主修课程不用写,这个没有人去关注的。
点赞 评论 收藏
分享
沟头学院:无关比赛不要写,这样会显着你主次不分,比赛不要撒谎,有哪些就写那些,创新创业建议删除。技能特长可以适当夸大。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务