35.搜索插入位置

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

你可以假设数组中无重复元素。

示例 1:
输入: [1,3,5,6], 5
输出: 2

示例 2:
输入: [1,3,5,6], 2
输出: 1

示例 3:
输入: [1,3,5,6], 7
输出: 4

示例 4:
输入: [1,3,5,6], 0
输出: 0

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/search-insert-position

解答

解法1

    def searchInsert(nums, target):
        if target in nums:
            return nums.index(target)
        else:
            nums.append(target)
            nums = sorted(nums)
            return nums.index(target)

解法2
用二分法实现。在排好序的列表里寻找位置就要想到二分法!

思路:
在列表头和列表尾设置两个指针,指针在列表移动。

从列表中间值开始匹配target。
如果target小于中间值,则将右指针向左移到中间值左边;
如果target大于中间值,则将左指针向右移到中间值右边。然后再寻找中间值。

判断条件:右指针索引小于左指针停止
最后返回左指针的索引。(插入新数值的位置)

    def searchInsert(nums, target):
        left = 0
        right = len(nums - 1)
        while left <= right:
            mid = left + (right - left) // 2
            if nums[mid] == target:
                  return mid
            elif target < nums[mid]:
                  right = mid - 1
             else:
                  left = mid +1
        return left
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的...
    FiveZM阅读 3,211评论 0 0
  • 题目 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序...
    禾木清清阅读 1,256评论 0 0
  • 35. 搜索插入位置 问题 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组...
    王可尊阅读 2,405评论 0 0
  • 更多精彩内容,请关注【力扣简单题】。 题目 难度:类型:数组 给定一个排序数组和一个目标值,在数组中找到目标值,并...
    玖月晴阅读 5,045评论 0 0
  • 题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按...
    河海中最菜阅读 1,324评论 0 0

友情链接更多精彩内容