yan chuanli 2 vuotta sitten
vanhempi
commit
4eee2d1323
1 muutettua tiedostoa jossa 44 lisäystä ja 0 poistoa
  1. 44 0
      search_insert.py

+ 44 - 0
search_insert.py

@@ -0,0 +1,44 @@
+from typing import List
+
+import pytest
+
+
+def searchInsert(nums: List[int], target: int):
+    lens = len(nums)
+    # 普通解法
+    # if target in nums:
+    #     return nums.index(target)
+    # else:
+    #     for i in range(lens):
+    #         if target <= nums[i]:
+    #             nums.insert(i, target)
+    #             return i
+    # return lens
+
+    # 二分法
+    left, right = 0, lens - 1
+    while left <= right:
+        mid = left + (right - left) // 2
+        if nums[mid] == target:
+            return mid
+        if nums[mid] < target:
+            left = mid + 1
+        else:
+            right = mid - 1
+    return left
+
+
+
+# print(searchInsert([1,3,5,6], 5))
+
+@pytest.mark.parametrize(
+    "nums, target, expect",
+    [
+        ([1,3,5,6], 0, 0),
+        ([1,3,5,6], 5, 2),
+        ([1,3,5,6], 2, 1),
+        ([1,3,5,6], 7, 4)
+    ]
+)
+def test_cases(nums, target, expect):
+    assert searchInsert(nums, target) == expect