All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0601_0700.s0645_set_mismatch.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
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;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy