Table of Content
题目如下:
这道题使用双指针折半查找比较容易解,指的注意的是,如果出现插入元素与输入数组里的元素相同,需要插入到相同元素的位置,比如: [8,5,3],5 应该返回1,而不是2。
参考代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
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 |
如果您有好的建议,欢迎来信与我交流

也欢迎关注微信公众号“苔原带”

