594. 最长和谐子序列

和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。

现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。

示例 1:

输入: [1,3,2,2,5,2,3,7]
输出: 5
原因: 最长的和谐数组是:[3,2,2,2,3].

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-harmonious-subsequence

 1 import java.util.HashMap;
 2 import java.util.Map;
 3 
 4 public class LhsFind {
 5     public int findLHS(int[] nums) {
 6         Map<Integer, Integer> map = new HashMap<>();
 7         for(int i = 0; i < nums.length; i++) {
 8             if(map.containsKey(nums[i])) {
 9                 int value = map.get(nums[i]) + 1;
10                 map.put(nums[i], value);
11             }else {
12                 map.put(nums[i], 1);
13             }
14         }
15         int res = 0;
16         for(Integer key : map.keySet()) {
17             if(map.containsKey(key + 1)) {
18                 int temp = map.get(key) + map.get(key + 1);
19                 res = Math.max(temp, res);
20             }
21         }
22         return res;
23     }
24 }

 

posted @ 2019-07-19 01:07  往南的小燕子  阅读(158)  评论(0编辑  收藏  举报