20240116-唯一出现次数
题目要求
给定一个整数数组 arr,如果数组中每个值出现的次数唯一,则返回 true,否则返回 false。
思路
- 使用哈希映射查找数组中每个元素出现的次数。
- 遍历哈希映射并检查是否存在重复值。
这题比较简单,就直接写代码了。
代码
class Solution {
public:bool uniqueOccurrences(vector<int>& arr) {unordered_map<int, int> map, times;for (int i = 0; i < arr.size(); ++i) {map[arr[i]]++;}for (auto p : map) {times[p.second]++;}for (auto p : times) {if (p.second > 1) {return false;}}return true;}
};
然后感觉用两个哈希表太复杂,再去问问gpt能不能优化。
class Solution {
public:bool uniqueOccurrences(vector<int>& arr) {unordered_map<int, int> countMap;unordered_set<int> occurrences;for (int i = 0; i < arr.size(); ++i) {countMap[arr[i]]++;}for (auto& p : countMap) {if (!occurrences.insert(p.second).second) {// If insertion fails, duplicate occurrence count foundreturn false;}}return true;}
};
结果好像反而还变慢了(leetcode上面的测试结果)。