给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。 如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。
时间: 2023-09-04 07:05:23 浏览: 56
### 回答1:
好的,这是一个技术性问题,我可以回答。以下是解答:
您可以使用一个 HashMap 来统计每个数出现的次数。遍历整个数组,每次遍历到一个数时,在 HashMap 中查找该数是否已经存在。如果存在则增加对应的出现次数,否则将该数添加为新的 key,并将对应的 value 初始化为 1。最后再次遍历 HashMap,判断是否有出现次数相同的数。如果有则返回 false,否则返回 true。以下是代码实现:
public boolean uniqueOccurrences(int[] arr) {
Map<Integer, Integer> count = new HashMap<>();
for (int num : arr) {
count.put(num, count.getOrDefault(num, 0) + 1);
}
Set<Integer> set = new HashSet<>(count.values());
return set.size() == count.size();
}
### 回答2:
要统计数组中每个数的出现次数,可以创建一个空字典,然后遍历数组,对于数组中的每个元素,如果字典中不存在该元素,则将该元素作为键,出现次数初始化为1;如果字典中已经存在该元素,则将该元素的出现次数加1。最后,判断字典中所有的出现次数是否都是独一无二的,若是,则返回 true,否则返回 false。
以下是实现该功能的代码:
def uniqueOccurrences(arr):
count_dict = {}
for num in arr:
if num not in count_dict:
count_dict[num] = 1
else:
count_dict[num] += 1
occurrences = list(count_dict.values())
return len(occurrences) == len(set(occurrences))
arr = [1, 2, 2, 3, 3, 3]
result = uniqueOccurrences(arr)
print(result)
以上代码输出结果为 false,因为数组中有两个数字出现次数为3,不满足独一无二的要求。
### 回答3:
首先,我们可以使用哈希表来统计数组中每个数的出现次数。遍历整个数组,对于每个元素,如果在哈希表中不存在,则将它加入到哈希表中并初始化出现次数为 1;否则,将对应的出现次数加 1。
然后,我们可以使用一个集合来保存已经出现过的出现次数。再次遍历哈希表中的每个出现次数,如果该出现次数已经在集合中存在,则说明不满足要求,直接返回 false;否则,将该出现次数加入到集合中。最后,如果遍历完哈希表中的每个出现次数都没有出现重复的出现次数,则返回 true。
以下是具体的实现代码:
def uniqueOccurrences(arr):
count = {}
for num in arr:
if num not in count:
count[num] = 1
else:
count[num] += 1
occurrence_set = set()
for value in count.values():
if value in occurrence_set:
return False
occurrence_set.add(value)
return True
上述代码的时间复杂度为 O(n),其中 n 为数组的长度。整体思路是利用哈希表统计出现次数,并使用集合来判断出现次数是否重复。