leetcode-daily/cpp/2210/221023.cpp

27 lines
816 B
C++

#include <vector>
/**
* 645. Set Mismatch
*
* You have a set of integers s, which originally contains all the numbers from 1 to n. Unfortunately, due to some error, one of the numbers in s got duplicated to another number in the set, which results in repetition of one number and loss of another number.
* You are given an integer array nums representing the data status of this set after the error.
* Find the number that occurs twice and the number that is missing and return them in the form of an array.
*/
class Solution {
public:
static std::vector<int> findErrorNums(const std::vector<int>& n) {
std::vector<bool> s(n.size() + 1);
int x = 0;
for (int i : n) {
if (s[i])
x = i;
s[i] = true;
}
for (int i = 1; i <= s.size(); ++i)
if (!s[i])
return {x, i};
return {};
}
};