コード例 #1
0
        public static List <int> FindAllDuplicates(int[] nums)
        {
            int i = 0;

            while (i < nums.Length)
            {
                if (nums[i] != i + 1 && nums[i] != nums[nums[i] - 1])
                {
                    FindMissingNumber.Swap(i, nums[i] - 1, nums);
                }
                else
                {
                    i++;
                }
            }
            List <int> duplicateNumbers = new List <int>();

            for (i = 0; i < nums.Length; i++)
            {
                if (nums[i] != i + 1)
                {
                    duplicateNumbers.Add(nums[i]);
                }
            }

            return(duplicateNumbers);
        }
コード例 #2
0
        public static List <int> FindAllNumbers(int[] nums)
        {
            List <int> missingNumbers = new();
            // TODO: Write your code here
            int i = 0;

            while (i < nums.Length)
            {
                if (nums[i] != i + 1 && nums[i] != nums[nums[i] - 1])
                {
                    FindMissingNumber.Swap(i, nums[i] - 1, nums);
                }
                else
                {
                    i++;
                }
            }

            for (i = 0; i < nums.Length; i++)
            {
                if (nums[i] != i + 1)
                {
                    missingNumbers.Add(i + 1);
                }
            }

            return(missingNumbers);
        }
コード例 #3
0
        public static int Find(int[] nums)
        {
            // TODO: Write your code here

            int i = 0;

            while (i < nums.Length)
            {
                if (nums[i] != i + 1)
                {
                    if (nums[nums[i] - 1] != nums[i])
                    {
                        FindMissingNumber.Swap(i, nums[i] - 1, nums);
                    }

                    else // we have found the duplicate
                    {
                        return(nums[i]);
                    }
                }
                else
                {
                    i++;
                }
            }

            return(i);
        }