一般考虑这种题目,通用解法就是将原数组当成哈希表操作(因为元素都是1-n)。
这里面需要考虑的是怎样用原数组达到要求。
首先我们考虑如何将一个数字标记为已访问过:可以将其置为他的负值。
遍历过程中,我们只要发现对应位置上的数组已经被置为负值了,那么就认为是出现第二次了,保存结果。
class Solution:
def findDuplicates(self, nums: List[int]) -> List[int]:
ret=[]
for k in nums:
i=abs(k)-1
if nums[i]<0:
ret.append(i+1)
else:
nums[i]*=-1
return ret