题目描述
给定一个整数数组,计算x+1也在数组内的元素x的个数
相同元素分开来算
思路
比较容易想到的是额外使用一个hashset,在对数组进行遍历的同时,判断x+1是否在已出现过的数组元素中,如果不在,将x保存在set中
不知道算不算一个小技巧,将数组排序过后,从后往前,也就是按照降序去遍历会让这道题变得非常简单
总结一下步骤就是:
- 对数组进行排序
- 按照降序的顺序对数组进行遍历,每次得到元素x
2.1 如果x+1在set中,count++
2.2 如果x+1不在set中,将x存入set
code如下:
class Solution {
public int countElements(int[] arr) {
if (arr == null || arr.length == 0) {
return 0;
}
Arrays.sort(arr);
Set<Integer> set = new HashSet<>();
set.add(arr[arr.length - 1]); // 最大的数肯定不满足题意
int count = 0;
for (int i = arr.length - 2; i >= 0; --i) {
int num = arr[i];
if (set.contains(num + 1)) {
count++;
}
set.add(num);
}
return count;
}
}