LeetCode 35. Search Insert Position(搜尋插入位置)
阿新 • • 發佈:2018-12-13
原題
Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
You may assume no duplicates in the array.
題目: 給定一個已排序的陣列和一個目標值, 如果找到目標, 則返回索引。如果沒有, 則返回它按順序插入的索引。
可以認為陣列中沒有重複項。
Example 1:
Input: [1,3,5,6], 5 Output: 2
Example 2:
Input: [1,3,5,6], 2
Output: 1
Example 3:
Input: [1,3,5,6], 7
Output: 4
Example 4:
Input: [1,3,5,6], 0
Output: 0
My Solution
方案一
class Solution:
def searchInsert(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
if not nums:
return 0
if target <= nums[0]:
return 0
if target > nums[-1]:
return len(nums)
start = 0
end = len(nums) - 1
found = True
while start <= end:
mid = int((start + end)/2)
if nums[mid] == target:
return mid
if nums[mid] < target:
start = mid + 1
if nums[mid] > target:
end = mid - 1
if nums[mid] < target:
return mid + 1
else:
return mid
反思:
- 看到這種方法先想到怎麼使用二分法(效率高,時間複雜度為log(n));