力扣小白刷题之594题最长和谐子序列
题目描述
和谐数组是指一个数组里,元素的最大值和最小值差别正好为 1。
现在给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。
思路
参考自:https://github.com/CyC2018/CS-Notes/blob/master/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E5%93%88%E5%B8%8C%E8%A1%A8.md
和谐序列中最大数与最小数之差正好为 1,应该注意的是序列的元素不一定是数组的连续元素。
题目要求的不是子数组,所以直接使用 Map 来记录元素出现的次数,然后遍历 Map 求出差值为 1 的最大值即可。
代码
- map.getOrDefault(key, defaultValue),即当Map集合中有这个key时,就使用这个key的value,如果没有就使用默认值defaultValue。
- map.put(key, value)
- map.keySet(), 该方法返回map中所有key值的列表。
- map中的containsKey(key),判断该key在map中是否存在。
- map.get(key),返回指定键所映射的值。