【LeetCode】Fizz Buzz解題レポート
1754 ワード
【LeetCode】Fizz Buzz解題レポート
[LeetCode]
https://leetcode.com/problems/find-all-numbers-disappeared-in-an-array/ Total Accepted: 14302 Total Submissions: 24993 Difficulty: Easy
Question
Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.
Find all the elements of [1, n] inclusive that do not appear in this array.
Could you do it without extra space and in O(n) runtime? You may assume the returned list does not count as extra space.
Example:
Input: [4,3,2,7,8,2,3,1]
Output: [5,6]
Ways
最初は意外に効果的な方法で、暴力で解決するしかなかった.一つの方法だけでは問題に合わない余分な空間の要求がない.
方法1:
AC:359 ms
方法2:
他の人を参考にして、私は1つの方法をマスターしました:その場でマイナスになってマークします.例えば[4,3,2,7,8,2,3,1]については,これらの要素をリストのインデックスとして指向する要素を負数に変換すると,負数に変換されていない位置は誰も指向していないため,この位置に対応する下付き文字は現れない.
AC:362 ms
この速度は依然として理想的ではない.
Date
2017年1月2日
[LeetCode]
https://leetcode.com/problems/find-all-numbers-disappeared-in-an-array/
Question
Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.
Find all the elements of [1, n] inclusive that do not appear in this array.
Could you do it without extra space and in O(n) runtime? You may assume the returned list does not count as extra space.
Example:
Input: [4,3,2,7,8,2,3,1]
Output: [5,6]
Ways
最初は意外に効果的な方法で、暴力で解決するしかなかった.一つの方法だけでは問題に合わない余分な空間の要求がない.
方法1:
class Solution(object):
def findDisappearedNumbers(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
cList = list(range(1, len(nums) + 1))
returnList = []
for x in nums:
cList[x - 1] = 0
for x in cList:
if x != 0:
returnList.append(x)
return returnList
AC:359 ms
方法2:
他の人を参考にして、私は1つの方法をマスターしました:その場でマイナスになってマークします.例えば[4,3,2,7,8,2,3,1]については,これらの要素をリストのインデックスとして指向する要素を負数に変換すると,負数に変換されていない位置は誰も指向していないため,この位置に対応する下付き文字は現れない.
class Solution(object):
def findDisappearedNumbers(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
for i in range(len(nums)):
index=abs(nums[i])-1
nums[index]= - abs(nums[index])
return [i+1 for i in range(len(nums)) if nums[i] > 0]
AC:362 ms
この速度は依然として理想的ではない.
Date
2017年1月2日