442. Find All Duplicates in an Array (Medium) - TengnanYao/daily_leetcode GitHub Wiki
class Solution:
def findDuplicates(self, nums: List[int]) -> List[int]:
# their solution
res = []
for x in nums:
if nums[abs(x) - 1] < 0:
res.append(abs(x))
else:
nums[abs(x) - 1] *= -1
return res
# my solution
result = set()
i = 0
while i < len(nums):
if nums[i] != i + 1:
t = nums[i] - 1
if nums[t] == nums[i]:
result.add(nums[i])
i += 1
else:
nums[i], nums[t] = nums[t], nums[i]
else:
i += 1
return result