题目描述
blablabla
样例
blablabla
算法1
变负
根据正负数进行判断。在遍历数组时,对每个坐标i下的值nums[i],找到其abs(nums[i])-1坐标下的值,将其置为相反数,即nums[abs(nums[i])-1]=0-nums[abs(nums[i])-1]。第一次访问置为了负数,这样表示nums[i]这个值我已经遍历过了。当判断nums[abs(nums[i])-1]这个 值为正数了,说明我访问过两次,这个值重复了,将abs(nums[i])放入结果数组中。最终遍历结束返回结果数组。
————————————————
时间复杂度
参考文献
Python3 代码
class Solution2(object):
def findDuplicates(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
dup=[]
if len(nums)==0:
return dup
for i in range(len(nums)):
nums[abs(nums[i])-1]=0-nums[abs(nums[i])-1]
if nums[abs(nums[i])-1]>0:
dup.append(abs(nums[i]))
return dup
————————————————