c++ 确定向量中所有值的出现频率是否相等[闭合]

plupiseo  于 2023-02-14  发布在  其他
关注(0)|答案(1)|浏览(88)

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
3天前关闭。
这篇文章是编辑和提交审查3天前。
Improve this question
这个代码有什么问题?

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

js4nwp54

js4nwp541#

你的问题就在这里:

for (int i = 0; i < v.size() - 1; i++) {
        if (v[i] != v[i + 1])
            return true;
    }
    return false;

您应该交换return truereturn false

for (int i = 0; i < v.size() - 1; i++) {
        if (v[i] != v[i + 1])
            return false;
    }
    return true;

相关问题