0594. Longest Harmonious Subsequence

0594. Longest Harmonious Subsequence #

题目 #

  • 和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1
  • 现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。
  • 数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。

思路 #

模拟 #

滑动窗口 #

代码 #

模拟 #

class Solution {
    public int findLHS(int[] nums) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int num: nums) map.put(num, map.getOrDefault(num, 0) + 1);
        
        int ans = 0;
        for (int num: nums) {
            if (map.containsKey(num-1)) ans=Math.max(ans, map.get(num-1)+map.get(num));
        }
        
        return ans;
    }
}

迭代 #

致谢 #

宫水三叶