首页 > 其他 > 详细

Max Subsequence

时间:2016-11-22 02:40:45      阅读:208      评论:0      收藏:0      [点我收藏+]

一个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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!