今天看到一个题目说是
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例 :
输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3
但是,我现在的想法是输出 2 和 3 两个数字,不是其中的一个。我应该怎么修改这个代码
#include <stdio.h>
#include <stdlib.h>
int findRepeatNumber(int* nums, int numsSize) {
//此题无须增加对数组为空、元素个数为0、元素越界情况的判断
for (int i = 0; i < numsSize; i++) {
//如果元素位置不对,则交换
while (nums[i] != i) {
//交换前检查是否相等
if (nums[i] == nums[nums[i]])
return nums[i];
int temp = nums[i];
nums[i] = nums[temp];
nums[temp] = temp;
}
}
return -1;
}
int main()
{
int a[] ={2, 3, 1, 0, 2, 5, 3};
findRepeatNumber(a,7);
printf("%d",findRepeatNumber(a,7));
return 0;
}