Skip to content

Latest commit

 

History

History

1207.Unique Number of Occurrences

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

English Version

题目描述

给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。

如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false

 

示例 1:

输入:arr = [1,2,2,1,1,3]
输出:true
解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。

示例 2:

输入:arr = [1,2]
输出:false

示例 3:

输入:arr = [-3,0,1,-3,1,1,1,-3,10,0]
输出:true

 

提示:

  • 1 <= arr.length <= 1000
  • -1000 <= arr[i] <= 1000

解法

“哈希表 - 计数器”实现。

Python3

class Solution:
    def uniqueOccurrences(self, arr: List[int]) -> bool:
        counter = Counter(arr)
        s = set()
        for num in counter.values():
            if num in s:
                return False
            s.add(num)
        return True

Java

class Solution {
    public boolean uniqueOccurrences(int[] arr) {
        Map<Integer, Integer> counter = new HashMap<>();
        for (int e : arr) {
            counter.put(e, counter.getOrDefault(e, 0) + 1);
        }
        Set<Integer> s = new HashSet<>();
        for (int num : counter.values()) {
            if (s.contains(num)) {
                return false;
            }
            s.add(num);
        }
        return true;
    }
}

C++

class Solution {
public:
    bool uniqueOccurrences(vector<int>& arr) {
        unordered_map<int, int> counter;
        for (auto e : arr) {
            ++counter[e];
        }
        unordered_set<int> s;
        for (auto e : counter) {
            int num = e.second;
            if (s.count(num)) return false;
            s.insert(num);
        }
        return true;
    }
};

Go

func uniqueOccurrences(arr []int) bool {
	counter := make(map[int]int)
	for _, e := range arr {
		counter[e]++
	}
	s := make(map[int]bool)
	for _, num := range counter {
		if s[num] {
			return false
		}
		s[num] = true
	}
	return true
}

...