Loading... > https://leetcode.cn/problems/find-missing-and-repeated-values/description/?envType=daily-question&envId=2024-05-02 简单题,遍历一遍记录出现过的数字,即可找到重复的数字。因为 $n^2$ 个数字每个都会出现一遍,所以用等差数列和减去每个不重复的数字,剩下的就是缺失的数字。 ```c++ class Solution { public: std::vector<int> findMissingAndRepeatedValues(std::vector<std::vector<int>>& grid) { const int n = grid.size() * grid.size(); std::bitset<2504> nums; int sum = 0, duplicate; for (auto &rows : grid) { for (auto &num : rows) { if (nums[num]) duplicate = num; nums.set(num); sum += num; } } return {duplicate, n + n * (n - 1) / 2 - sum + duplicate}; } }; ``` - 时间复杂度:$O(n^2)$ ,其中 $n$ 是 `grid` 数组的行数和列数。 - 空间复杂度:$O(n^2)$ 。 最后修改:2024 年 05 月 31 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏