From f04d61b11a2ee41e377631f757421dcda88a1612 Mon Sep 17 00:00:00 2001 From: Hiro Funatsuka Date: Thu, 30 Apr 2026 23:48:37 +0900 Subject: [PATCH] Solve search insert position --- 35-search-insert-position/.DS_Store | Bin 0 -> 6148 bytes 35-search-insert-position/problem.md | 1 + 35-search-insert-position/step1.md | 22 ++++++++++++++++++++++ 35-search-insert-position/step2.md | 16 ++++++++++++++++ 35-search-insert-position/step3.md | 22 ++++++++++++++++++++++ 5 files changed, 61 insertions(+) create mode 100644 35-search-insert-position/.DS_Store create mode 100644 35-search-insert-position/problem.md create mode 100644 35-search-insert-position/step1.md create mode 100644 35-search-insert-position/step2.md create mode 100644 35-search-insert-position/step3.md diff --git a/35-search-insert-position/.DS_Store b/35-search-insert-position/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 int: + start_index, end_index = 0, len(nums) - 1 + while start_index <= end_index: + middle_index = (start_index + end_index) // 2 + if nums[middle_index] == target: + return middle_index + elif nums[middle_index] < target: + start_index = middle_index + 1 + else: + end_index = middle_index - 1 + return start_index +``` + +時間計算量: $O(\log n)$ + +空間計算量: $O(1)$ diff --git a/35-search-insert-position/step2.md b/35-search-insert-position/step2.md new file mode 100644 index 0000000..3253422 --- /dev/null +++ b/35-search-insert-position/step2.md @@ -0,0 +1,16 @@ +# Step 2 + +```python +class Solution: + def searchInsert(self, nums: List[int], target: int) -> int: + start, end = 0, len(nums) - 1 + while start <= end: + middle = start + (end - start) // 2 + if nums[middle] == target: + return middle + elif nums[middle] < target: + start = middle + 1 + else: + end = middle - 1 + return start +``` diff --git a/35-search-insert-position/step3.md b/35-search-insert-position/step3.md new file mode 100644 index 0000000..165e764 --- /dev/null +++ b/35-search-insert-position/step3.md @@ -0,0 +1,22 @@ +# Step 3 + +```python +class Solution: + def searchInsert(self, nums: List[int], target: int) -> int: + start, end = 0, len(nums) - 1 + while start <= end: + middle = start + (end - start) // 2 + if nums[middle] == target: + return middle + elif nums[middle] > target: + end = middle - 1 + else: + start = middle + 1 + return start +``` + +1回目: 1分 31秒 + +2回目: 1分 26秒 + +3回目: 1分 27秒