## 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*.

**Example 1:**

Input:nums = [1,2,2,4]Output:[2,3]

**Example 2:**

Input:nums = [1,1]Output:[1,2]

**Constraints:**

`2 <= nums.length <= 10`

^{4}`1 <= nums[i] <= 10`

^{4}

## Rust Solution

```
struct Solution;
use std::collections::HashSet;
impl Solution {
fn find_error_nums(nums: Vec<i32>) -> Vec<i32> {
let n = nums.len();
let mut hs: HashSet<i32> = HashSet::new();
let mut res: Vec<i32> = vec![];
for x in nums {
if !hs.insert(x) {
res.push(x);
}
}
for i in 1..=n {
if hs.insert(i as i32) {
res.push(i as i32);
}
}
res
}
}
#[test]
fn test() {
let nums = vec![1, 2, 2, 4];
let res = vec![2, 3];
assert_eq!(Solution::find_error_nums(nums), res);
}
```

Having problems with this solution? Click here to submit an issue on github.