题目如下:
这道题使用双指针折半查找比较容易解,指的注意的是,如果出现插入元素与输入数组里的元素相同,需要插入到相同元素的位置,比如: [8,5,3],5 应该返回1,而不是2。
参考代码如下:
class Solution:
def searchInsert(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
le = len(nums)
if le == 0:
return 0
if target > nums[-1]:
return le
elif target < nums[0]:
return 0
elif target = nums[-1]:
return le - 1
elif target = nums[0]:
return 0
lo = 0
hi = le - 1
while lo < hi:
if (hi - lo) // 2 > 0:
mid = lo + (hi - lo) // 2
if nums[mid] < target:
lo = mid
elif nums[mid] > target:
hi = mid
elif nums[mid] == target:
return mid
else:
return hi
return hi
源码地址:
https://github.com/jediL/LeetCodeByPython
其它题目:[leetcode题目答案讲解汇总(Python版 持续更新)]
(//www.greatytc.com/p/60b5241ca28e)
ps:如果您有好的建议,欢迎交流 :-D,
也欢迎访问我的个人博客 苔原带 (www.tundrazone.com)