Exemplo n.º 1
0
        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 });
        }
Exemplo n.º 2
0
        public void Missing_2()
        {
            var array = new[] { 3, 0, 1 };

            var sol = new FindMissingNumber();

            Assert.Equal(2, sol.MissingNumber(array));
        }
Exemplo n.º 3
0
        public void Missing_0()
        {
            var array = new[] { 2, 1 };

            var sol = new FindMissingNumber();

            Assert.Equal(0, sol.MissingNumber(array));
        }
Exemplo n.º 4
0
        public void Missing_no_missing()
        {
            var array = new[] { 0, 2, 1 };

            var sol = new FindMissingNumber();

            Assert.Equal(3, sol.MissingNumber(array));
        }
Exemplo n.º 5
0
        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));
        }