英文:
Determine if all values in a vector are unique
问题
以下是翻译的代码部分:
class Solution {
public:
bool uniqueOccurrences(vector<int> &arr) {
map<int, int> mp;
for (auto x : arr) {
mp[x]++;
}
vector<int> v;
for (auto x : mp) {
v.push_back(x.second);
}
sort(v.begin(), v.end());
for (int i = 0; i < v.size() - 1; i++) {
if (v[i] != v[i + 1])
return true;
}
return false;
}
};
这段代码的目标是给定一个整数数组 arr,如果数组中每个值的出现次数都是唯一的,则返回 true,否则返回 false。
问题陈述如下,并且在各种测试案例中都能正常工作,但在以下测试案例中失败:[3,5,-2,-3,-6,-6] 应返回 false,但返回 true。
英文:
What is wrong with this code?
class Solution {
public:
bool uniqueOccurrences(vector<int> &arr) {
map<int, int> mp;
for (auto x : arr) {
mp[x]++;
}
vector<int> v;
for (auto x : mp) {
v.push_back(x.second);
}
sort(v.begin(), v.end());
for (int i = 0; i < v.size() - 1; i++) {
if (v[i] != v[i + 1])
return true;
}
return false;
}
};
Given an array of integers arr, return true if the number of occurrences of each value in the array is unique or false otherwise.
This was the question statement and was working fine with various test cases but fails in the follow test case: [3,5,-2,-3,-6,-6] should return false but returns true
答案1
得分: -1
你的问题在这里:
for (int i = 0; i < v.size() - 1; i++) {
if (v[i] != v[i + 1])
return true;
}
return false;
你应该交换return true
和return false
。
for (int i = 0; i < v.size() - 1; i++) {
if (v[i] != v[i + 1])
return false;
}
return true;
英文:
Your problem is here:
for (int i = 0; i < v.size() - 1; i++) {
if (v[i] != v[i + 1])
return true;
}
return false;
You should swap the return true
and return false
.
for (int i = 0; i < v.size() - 1; i++) {
if (v[i] != v[i + 1])
return false;
}
return true;
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论