public static int[] Find(int[] nums) { // TODO: Write your code here int duplicate = 0; int missing = 0; int i = 0; while (i < nums.Length) { if (nums[i] != i + 1 && nums[i] != nums[nums[i] - 1]) { FindMissingNumber.Swap(nums[i] - 1, i, nums); } else { i++; } } for (int j = 0; j < nums.Length; j++) { if (nums[j] != j + 1) { missing = j + 1; duplicate = nums[j]; break; } } return(new int[] { duplicate, missing }); }
public void Missing_2() { var array = new[] { 3, 0, 1 }; var sol = new FindMissingNumber(); Assert.Equal(2, sol.MissingNumber(array)); }
public void Missing_0() { var array = new[] { 2, 1 }; var sol = new FindMissingNumber(); Assert.Equal(0, sol.MissingNumber(array)); }
public void Missing_no_missing() { var array = new[] { 0, 2, 1 }; var sol = new FindMissingNumber(); Assert.Equal(3, sol.MissingNumber(array)); }
public void Missing_8() { var array = new[] { 9, 6, 4, 2, 3, 5, 7, 0, 1 }; var sol = new FindMissingNumber(); Assert.Equal(8, sol.MissingNumber(array)); }