题目 https://leetcode.com/problems/search-insert-position/description/
解决方案
class Solution:
def searchInsert(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
if len(nums) == 0 or nums[0] >= target:
return 0
for i in range(len(nums)-1):
print(i)
if nums[i] == target:
return i
elif nums[i] < target and nums[i+1] >= target:
return i+1
return len(nums)
写完 时间复杂度是 O(n) O ( n ) 了。。难受~
再去研究一下别人的方案,说是经典二分查找的变种。我真的是菜啊!!!!!
于是想想办法呗,弄个左右角标分呗。
其他解决方案:
class Solution:
def searchInsert(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
left, right = 0, len(nums) - 1
if target > nums[right]:
return right+1
if target <= nums[left]:
return left
while(left < right):
mid = (right + left)//2
if nums[mid] == target:
return mid
elif nums[mid] > target:
right = mid
elif nums[mid] < target:
left = mid
if right - left == 1:
return left+1
现在变成 O(logn) O ( l o g n ) 了,还阔以。