列表

详情


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。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int countElements(vector<int>& arr) { } };

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)))

上一题