码迷,mamicode.com
首页 > 其他好文 > 详细

Max Subsequence

时间:2016-11-22 02:41:37      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:efault   span   应该   sequence   长度   code   null   nbsp   ash   

一个sequence,里面都是整数,求最长的subsequence的长度,使得这个subsquence的最大值和最小值相差不超过1. 比如[1,3,2,2,5,2,3,7]最长的subsequence是[3,2,2,2,3],所以应该返回5.

分析:

这题可以先排序,然后找出两个相差1的相邻值的最大长度。第二种方法可以用HashMap,保存每个值出现的个数,然后从当前值往下找比当前值大1的数出现的个数。

 1   public int maxSequence(int[] arr) {
 2         if (arr == null || arr.length == 0)
 3             return 0;
 4 
 5         Map<Integer, Integer> map = new HashMap<>();
 6         for (int key : arr) {
 7             map.put(key, map.getOrDefault(key, 0) + 1);
 8         }
 9         int max = 0;
10         for (int key : arr) {
11             max = Math.max(max, map.get(key) + map.getOrDefault(key + 1, 0));
12         }
13         return max;
14     }

 

Max Subsequence

标签:efault   span   应该   sequence   长度   code   null   nbsp   ash   

原文地址:http://www.cnblogs.com/beiyeqingteng/p/6087674.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!