class Solution {
public:
int countElements(vector<int>& arr) {
}
};
1426. 数元素
给你一个整数数组 arr
, 对于元素 x
,只有当 x + 1
也在数组 arr
里时,才能记为 1
个数。
如果数组 arr
里有重复的数,每个重复的数单独计算。
示例 1:
输入:arr = [1,2,3] 输出:2 解释:1 和 2 被计算次数因为 2 和 3 在数组 arr 里。
示例 2:
输入:arr = [1,1,3,3,5,5,7,7] 输出:0 解释:所有的数都不算, 因为数组里没有 2、4、6、8。
提示:
1 <= arr.length <= 1000
0 <= arr[i] <= 1000
原站题解
golang 解法, 执行用时: 4 ms, 内存消耗: 2.1 MB, 提交时间: 2023-10-15 18:14:29
func countElements(arr []int) int { s := make([]int, 1001) for _, num := range arr { s[num]++ } count := 0 for i := 0; i < 1000; i++ { if s[i] > 0 && s[i+1] > 0 { count += s[i] } } return count }
java 解法, 执行用时: 2 ms, 内存消耗: 39.5 MB, 提交时间: 2023-10-15 18:14:05
class Solution { public int countElements1(int[] arr) { if(arr==null || arr.length<2) return 0; int res = 0; int[] hashArr = new int[1001]; for(int i:arr){ hashArr[i]++; } for(int i=0; i<1000; i++){ if(hashArr[i+1]>0&&hashArr[i]>0) res+=hashArr[i]; } return res; } public int countElements(int[] arr) { if(arr==null || arr.length<2) return 0; int res = 0; Map<Integer, Integer> map = new HashMap<>(); for(int i:arr){ if(map.containsKey(i)) map.put(i, map.get(i)+1); else map.put(i, 1); } for(int i:map.keySet()){ if(map.containsKey(i+1)) res += map.get(i); } return res; } }
python3 解法, 执行用时: 80 ms, 内存消耗: 16.2 MB, 提交时间: 2023-10-15 18:13:33
class Solution: def countElements(self, arr: List[int]) -> int: return sum(arr[i]+1 in set(arr) for i in range(len(arr)))