LeetCode刷題記錄——第三十五題(搜尋插入位置)
阿新 • • 發佈:2018-12-19
題目描述
給定一個排序陣列和一個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。
你可以假設陣列中無重複元素。
示例 1:
輸入: [1,3,5,6], 5
輸出: 2
示例 2:
輸入: [1,3,5,6], 2
輸出: 1
示例 3:
輸入: [1,3,5,6], 7
輸出: 4
示例 4:
輸入: [1,3,5,6], 0
輸出: 0
程式碼示例
class Solution:
def searchInsert(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
start = 0
end = len(nums)
while start < end:
mid = (start+end)//2
if nums[mid] < target:
start = mid +1
elif nums[ mid] > target:
end = mid
else:
return mid
return start
遇到的問題
- start 和 end更新的問題,為什麼不能改成end = mid - 1這種形式無法通過?待解決。
直觀上,二分法,當target大於mid的時候,查詢左半邊;target小於mid的時候,查詢右半邊。