https://leetcode.com/problems/find-all-duplicates-in-an-array 442. Find All Duplicates in an Array 給你一個大小為 n 的陣列,裡面只包含1~n,每個元素只會出現一次或兩次,求出哪些 數字出現超過一次。 你必須使用常數空間和線性時間複雜度。 思路: 1.把整個陣列當成一個 map,因為數字只在1~n的關係不需額外空間,每次都把 nums[i] - 1 位置的索引標記成負數(乘上-1),如果某次走訪時發現已經是負的 就表示當前值重複出現了。 pycode: -------------------------------------------------------------------- class Solution: def findDuplicates(self, nums: List[int]) -> List[int]: res = [] for i in range(len(nums)): idx = abs(nums[i]) - 1 if nums[idx] < 0: res.append(abs(nums[i])) else: nums[idx] *= -1 return res -------------------------------------------------------------------- -- https://i.imgur.com/AhrL1pB.jpg
-- ※ 發信站: 批踢踢實業坊(ptt-web.org.tw), 來自: 101.138.175.27 (臺灣) ※ 文章網址: https://ptt-web.org.tw/Marginalman/M.1711329758.A.F2B
oinishere: 這題我還有看到用快慢指針的 超詭異的題目= = 03/25 09:23
JIWP: 大師 03/25 09:24
SecondRun: 大師 03/25 09:24
Rushia: 快慢指針不是這題吧 03/25 09:25
Rushia: 這題可能有一個以上環 03/25 09:25
colortea: 演藝圈一堆包養好嗎 03/25 09:25
JIWP: 快慢指標是昨天的,那題很多解法 03/25 09:26
oinishere: 我搞錯了 好像是昨天還前天 就是只找一個重複的那題? 03/25 09:26