题目
和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。
现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。
思路
- 先遍历数组,用哈希映射来存储每个数出现的次数
- 再遍历HashMap, Math.max迭代最大值
知识点
Map.getOrDefault()
方法,统计每个数出现的次数
当Map集合中有这个key时,就使用这个key值,找到对应的value,如果没有就返回默认值defaultValue
map.put(num, map.getOrDefault(num, 0)+1);
Map.keySet()
该方法返回Map中所有key值的列表
for(int key: map.keySet())
- 用Math.max()更新迭代最大值
res = Math.max(res, map.get(key)+map.get(key+1));
- foreach语句
foreach语句是java5的新特征之一
for(元素类型t 元素变量x : 遍历对象obj){
引用了x的java语句;
}
for(int key: map.keySet()){
if(map.containsKey(key+1)){
res = Math.max(res, map.get(key)+map.get(key+1)