首页 > 代码库 > Max Subsequence
Max Subsequence
一个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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。