Skip to content

645. Set Mismatch #13

@w4irdo

Description

@w4irdo
class Solution {
    public int[] findErrorNums(int[] nums) {
        for(int i = 0; i < nums.length; i++){
            while(nums[i] != i + 1 && nums[nums[i] - 1] != nums[i]){
                swap(nums, i, nums[i] - 1);
            }
        }
        
        for(int i = 0; i < nums.length; i++){
            if(nums[i] != i + 1){
                return new int[]{nums[i], i + 1};
            }
        }
        
        return null;
    }
    
    private void swap(int[] nums, int i, int j){
        int tmp = nums[i];
        nums[i] = nums[j];
        nums[j] = tmp;
    }
}
class Solution:
    def findErrorNums(self, nums: List[int]) -> List[int]:
        for i, num in enumerate(nums):
            while nums[i] != i + 1 and nums[nums[i] - 1] != nums[i]:
                tmp = nums[i]
                nums[i] = nums[tmp - 1]
                nums [tmp - 1] = tmp
                
        for i, num in enumerate(nums):
            if num == i + 1:
                continue
            return [num, i+1]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions