🐷
【LeetCode】448. Find All Numbers Disappeared in an Arrayを解く
問題概要
この配列には,2回現れる要素と1回現れる要素から構成されている.
この時,
例:
Input:
[4,3,2,7,8,2,3,1]
Output:
[5,6]
制約
- 戻り値以外の空間を確保せずに
の時間計算量で実装するO(n)
考えたこと
戻り値以外に空間を確保する場合は,
count[num-1] = False
のようにすれば,
この考えに基づいたコードは以下のとおりである:
class Solution(object):
def findDisappearedNumbers(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
count = [True]*len(nums)
for n in nums:
count[n-1] = False
return [i+1 for i, c in enumerate(count) if c == True]
但し,この回答では戻り値以外に配列
従って,既存のデータ(ここでは入力の配列
問題から,
class Solution(object):
def findDisappearedNumbers(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
for num in nums:
index = abs(num)-1
nums[index] = -abs(nums[index])
return list(i+1 for i,num in enumerate(nums) if num > 0)
Discussion