前言
找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
来源:力扣(LeetCode)
一、示例
二、代码
1.腊鸡代码(暴力)
代码如下(示例):
int findRepeatNumber(int* nums, int numsSize){
int i, j;
for(i = 0; i < numsSize; i++) {
for(j = 0; j < numsSize; j++) {
if(i == j) {
continue;
}
if(nums[i] == nums[j]) {
return nums[i];
}
}
}
return -1;
}
2.标准解法代码
代码如下(示例):
int findRepeatNumber(int* nums, int numsSize){
int* temp = (int*)malloc(sizeof(int) * numsSize);
memset(temp, 0, (sizeof(int) * numsSize) );
int i = 0;
while(i < numsSize) {
if(0 == temp[nums[i]] ) {
temp[nums[i]]++;
++i;
} else {
return nums[i];
}
}
return -1;
}