美文网首页
Day 33 寻找插入位置

Day 33 寻找插入位置

作者: 快乐的老周 | 来源:发表于2020-06-26 17:33 被阅读0次

在有序数组中查找插入元素的位置,显然可以使用二分查找。这篇题解提供的思路是“排除法”,即在循环的过程中,不断排除不需要的解,最后剩下的那个元素就一定是我们想要的。

首先,插入位置有可能在数组的末尾(题目中的示例 3),需要单独判断;

其次,如果待插入元素比最后一个元素严格小,并且在这个数组中有和插入元素一样的元素,返回任意一个位置即可;

否则,插入的位置应该是严格大于 target 的第 1 个元素的位置。

class Solution(object):
    def searchInsert(self, nums, target):
        """
        :type nums: list[int]
        :type target: int
        :rtype: int
        """
        left = 0
        right = len(nums)-1
        if target > nums[-1]:return right+1
        if target <= nums[0]:return left
        # import ipdb; ipdb.set_trace()  # XXX BREAKPOINT
        while left <= right:
            mid = (left + right) // 2
            if target == nums[mid]:
                return mid
            elif target > nums[mid]:
                left = mid + 1
                print(f'Left: {left} Right: {right}')
            else:
                right = mid -1
                print(f'Left: {left} Right: {right}')
        return mid



def test_serarchInsert():
    s = Solution()
    assert s.searchInsert([1,3,5,6],5) == 2
    assert s.searchInsert([1,3,5,6],2) == 1

s = Solution()
print(s.searchInsert([1,3,5,6,8,10,12,15,19,20,22,24,25,26,27,28],20))
print(s.searchInsert([1,3,5,6],2))
print(s.searchInsert([1,3,5,6],1))
print(s.searchInsert([1,3,5,6],6))
print(s.searchInsert([1,3,5,6],7))
print(s.searchInsert([1,3,5,6],7))


相关文章

  • Day 33 寻找插入位置

    在有序数组中查找插入元素的位置,显然可以使用二分查找。这篇题解提供的思路是“排除法”,即在循环的过程中,不断排除不...

  • Day 35 :寻找有序数组元素插入位置

    Day 35 :寻找有序数组元素插入位置 大家注意观察,上面的示例 1: 输入: [1,3,5,6], 待插入元素...

  • 35.寻找插入位置

    给定一有序数组,寻找某数的位置,如不存在则插入该数,并返回其索引。 思路:还是二分查找,如果不存在该数,那么我们实...

  • 315. Count of Smaller Numbers Af

    应用插入排序的思想求解,不过这里在寻找需要插入位置时,运用了二分查找的方法

  • eclipse 常用快捷键

    ctrl+. 寻找错误位置shift+ctrl+enter 向上插入空行shift+enter 向上插下空行...

  • string字符串相关

    查找387 寻找第一个不重复的字符位置53 最大和子字符串35 寻找有序字符串插入位置27 删除指定元素2...

  • 57. &56 Insert Interval

    题目要求: 题目要求 寻找插入位置,也是最简单的情况:根据newIntervals.start和intervals...

  • 红黑树核心之节点新增

    红黑树插入算法 红黑树节点插入与二叉搜索树类似,由根节点开始寻找待插入的位置。与二叉搜索树不同的内容大致有如下几点...

  • 搜索插入位置

    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的...

  • 搜索插入位置

    题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按...

网友评论

      本文标题:Day 33 寻找插入位置

      本文链接:https://www.haomeiwen.com/subject/hoyufktx.html