From ee0a8264e459eebdf1ff61f5140dff0675e83ede Mon Sep 17 00:00:00 2001 From: tom4649 Date: Thu, 16 Jul 2026 07:37:58 +0900 Subject: [PATCH] step1,2 --- 0268.Missing-Number/memo.md | 24 ++++++++++++++++++++++++ 0268.Missing-Number/step1_set.py | 8 ++++++++ 0268.Missing-Number/step1_sort.py | 10 ++++++++++ 0268.Missing-Number/step1_sum.py | 3 +++ 0268.Missing-Number/step2_sort.py | 9 +++++++++ 0268.Missing-Number/step2_xor.py | 9 +++++++++ 6 files changed, 63 insertions(+) create mode 100644 0268.Missing-Number/memo.md create mode 100644 0268.Missing-Number/step1_set.py create mode 100644 0268.Missing-Number/step1_sort.py create mode 100644 0268.Missing-Number/step1_sum.py create mode 100644 0268.Missing-Number/step2_sort.py create mode 100644 0268.Missing-Number/step2_xor.py diff --git a/0268.Missing-Number/memo.md b/0268.Missing-Number/memo.md new file mode 100644 index 0000000..db2df13 --- /dev/null +++ b/0268.Missing-Number/memo.md @@ -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の解法 + diff --git a/0268.Missing-Number/step1_set.py b/0268.Missing-Number/step1_set.py new file mode 100644 index 0000000..8457e55 --- /dev/null +++ b/0268.Missing-Number/step1_set.py @@ -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 + + diff --git a/0268.Missing-Number/step1_sort.py b/0268.Missing-Number/step1_sort.py new file mode 100644 index 0000000..53b33ab --- /dev/null +++ b/0268.Missing-Number/step1_sort.py @@ -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 diff --git a/0268.Missing-Number/step1_sum.py b/0268.Missing-Number/step1_sum.py new file mode 100644 index 0000000..33c84e7 --- /dev/null +++ b/0268.Missing-Number/step1_sum.py @@ -0,0 +1,3 @@ +class Solution: + def missingNumber(self, nums: List[int]) -> int: + return (len(nums)+1) * len(nums) // 2 - sum(nums) diff --git a/0268.Missing-Number/step2_sort.py b/0268.Missing-Number/step2_sort.py new file mode 100644 index 0000000..2bf8308 --- /dev/null +++ b/0268.Missing-Number/step2_sort.py @@ -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) diff --git a/0268.Missing-Number/step2_xor.py b/0268.Missing-Number/step2_xor.py new file mode 100644 index 0000000..7d96288 --- /dev/null +++ b/0268.Missing-Number/step2_xor.py @@ -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