本文主要是介绍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上面的测试结果)。
这篇关于20240116-唯一出现次数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!