题目:
给定一个n+1个长度的数组,包含从1到n的数字,其中一定包含一个重复的数字,返回这个重复的数字。只能使用常量大小的额外空间
解题思路:
利用数组的下标,将检索过的数字对应下标位置的内容存储为原数字的负数。这样既能保存原数字的大小,又能存储到该数字是否存在的信息。
代码:
class Solution(object):
def findDuplicate(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
for i in range(len(nums)):
if nums[abs(nums[i])]<0:
return abs(nums[i])
else:
nums[abs(nums[i])] = -nums[abs(nums[i])]