def find_corrupt_pair(nums): missing = None duplicated = None def swap(arr, first, second): arr[first], arr[second] = arr[second], arr[first] i = 0 while i < len(nums): correct = nums[i] - 1 if nums[i] != nums[correct]: swap(nums, i, correct) else: i += 1 for j in range(len(nums)): if nums[j] != j + 1: duplicated = nums[j] missing = j + 1 return missing, duplicated # Driver code def main(): array = [[3, 1, 2, 5, 2], [3, 1, 2, 3, 6, 4], [4, 1, 2, 1, 6, 3], [4, 3, 4, 5, 1], [5, 3, 5, 6, 2, 1]] for i in range(len(array)): print(i + 1, ".\tGiven array: ", array[i], sep="") result = find_corrupt_pair(array[i]) print("\n\tCorrupt pair: ", result[0], ", ", result[1], sep="") print("-"*100) if __name__ == '__main__': main()