![JAR search and dependency download from the Maven repository](/logo.png)
g0601_0700.s0645_set_mismatch.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g0601_0700.s0645_set_mismatch;
// #Easy #Array #Hash_Table #Sorting #Bit_Manipulation
// #2022_03_21_Time_2_ms_(97.45%)_Space_43.6_MB_(89.93%)
/**
* 645 - Set Mismatch\.
*
* Easy
*
* 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 <= 104
* * 1 <= nums[i] <= 104
**/
public class Solution {
public int[] findErrorNums(int[] nums) {
int[] ans = new int[2];
int i = 0;
while (i < nums.length) {
int correct = nums[i] - 1;
if (nums[i] != nums[correct]) {
int temp = nums[i];
nums[i] = nums[correct];
nums[correct] = temp;
} else {
i++;
}
}
for (int a = 0; a < nums.length; a++) {
if (nums[a] != a + 1) {
ans[0] = nums[a];
ans[1] = a + 1;
break;
}
}
return ans;
}
}