Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions 0268.Missing-Number/memo.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# 268. Missing Number

## step1
sortする解法: 時間 O(nlogn) 空間 O(n)
setを用いる: 時間 O(n) 空間 O(n)
和を用いる: 時間 O(n) 空間 O(1)

> Follow up: Could you implement a solution using only O(1) extra space complexity and O(n) runtime complexity?

最後のが答えか?

## 他の人のコード

https://leetcode.com/problems/missing-number/solutions/8334452/video-gauss-sum-and-bitwise-xor-by-abstr-pi85/

xorを使った解法。なるほど。これは覚えておきたい。

https://github.com/Kitaken0107/GrindEasy/pull/20

https://github.com/Nbotter/leetcode/pull/3/changes

## step2
sort解法の改善とxorの解法

8 changes: 8 additions & 0 deletions 0268.Missing-Number/step1_set.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
class Solution:
def missingNumber(self, nums: List[int]) -> int:
num_set = set(nums)
for i in range(len(nums)+1):
if i not in num_set:
return i


10 changes: 10 additions & 0 deletions 0268.Missing-Number/step1_sort.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
class Solution:
def missingNumber(self, nums: List[int]) -> int:
sorted_nums = sorted(nums)
expected = 0
for i in range(len(sorted_nums)):
if sorted_nums[i] != expected:
break
expected += 1

return expected
3 changes: 3 additions & 0 deletions 0268.Missing-Number/step1_sum.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
class Solution:
def missingNumber(self, nums: List[int]) -> int:
return (len(nums)+1) * len(nums) // 2 - sum(nums)
9 changes: 9 additions & 0 deletions 0268.Missing-Number/step2_sort.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class Solution:
def missingNumber(self, nums: List[int]) -> int:
sorted_nums = sorted(nums)
expected = 0
for expected, actual in enumerate(sorted_nums):
if expected != actual:
return expected

return len(nums)
9 changes: 9 additions & 0 deletions 0268.Missing-Number/step2_xor.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class Solution:
def missingNumber(self, nums: List[int]) -> int:
xor_sum = 0
for actual in nums:
xor_sum ^= actual
for expected in range(len(nums)+1):
xor_sum ^= expected

return xor_sum