We define a harmonious array as an array where the difference between its maximum value and its minimum value is exactly 1
.
Given an integer array nums
, return the length of its longest harmonious subsequence among all its possible subsequences.
A subsequence of array is a sequence that can be derived from the array by deleting some or no elements without changing the order of the remaining elements.
Example 1:
Input: nums = [1,3,2,2,5,2,3,7] Output: 5 Explanation: The longest harmonious subsequence is [3,2,2,2,3].
Example 2:
Input: nums = [1,2,3,4] Output: 2
Example 3:
Input: nums = [1,1,1,1] Output: 0
Constraints:
1 <= nums.length <= 2 * 104
-109 <= nums[i] <= 109
class Solution { public int findLHS(int[] nums) { int res = 0; Map<Long, Integer> map = new HashMap(); for(long num : nums) { map.put(num, map.getOrDefault(num, 0) + 1); } for(long key: map.keySet()) { if(map.containsKey(key + 1)) res = Math.max(res, map.get(key) + map.get(key + 1)); } return res; } }
草草草草草 这么简单的
就是subsequence,不用连续那种,就用hashmap记录freq即可,然后对每个key找有没有key+1的key,有的话就比较再更新。