找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
来源:力扣(LeetCode)
如:
输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3
方法一:列表、数组标记
python:
class Solution:
def findRepeatNumber(self, nums: List[int]) -> int:
numlist = [0 for x in range(0,len(nums))]
for index in range(0,len(nums)):
numlist[nums[index]]+=1
if numlist[nums[index]]>1:
return nums[index]
java:
class Solution {
public int findRepeatNumber(int[] nums) {
int[] list = new int[nums.length];
for (int index = 0; index < list.length; index++) {
list[nums[index]]++;
if (list[nums[index]]>1) {
return nums[index];
}
}
return -1;
}
}
c:
int findRepeatNumber(int* nums, int numsSize){
int list[numsSize];
for(int index =0;index<numsSize;index++)
list[index]=0;
for(int index =0;index<numsSize;index++){
list[nums[index]]++;
if(list[nums[index]]>1)
return nums[index];
}
return -1;
}
方法二:字典标记
class Solution:
def findRepeatNumber(self, nums: List[int]) -> int:
numdict = {}
for index in range(0, len(nums)):
if nums[index] not in numdict:
numdict[nums[index]]= 1
else:
return nums[index]