每日leetcode-数组-442. 数组中重复的数据
2021-06-01 02:01
标签:dup index 说明 nbsp 长度 思路 翻转 整数 其他 分类:数组-统计数组中的元素 题目描述: 给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。 找到所有出现两次的元素。 你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗? 解题思路: 由于数字i在1到n之间,可以将nums[i]设定为-nums[i]以此作为已经遍历过一次的标记。那么,如果遍历到某个i发现nums[i] 时间复杂度O(n) 每日leetcode-数组-442. 数组中重复的数据 标签:dup index 说明 nbsp 长度 思路 翻转 整数 其他 原文地址:https://www.cnblogs.com/LLLLgR/p/14727710.htmlclass Solution:
def findDuplicates(self, nums: List[int]) -> List[int]:
res=[]
for i in range(len(nums)):
index = abs(nums[i])-1
if nums[index]>0:
nums[index] *= -1
else:
res.append(index+1)
return res
空间复杂度O(1),利用了nums的空间。如果不想更改nums,可以再做一次循环,把所有负数翻转成正数
上一篇:APICloud教程
下一篇:JavaSE_流程控制