当前位置: 首页> 游戏> 评测 > 找产品代理去哪个网站_中山vi设计公司_免费seo视频教程_求职seo推荐

找产品代理去哪个网站_中山vi设计公司_免费seo视频教程_求职seo推荐

时间:2025/7/12 20:56:11来源:https://blog.csdn.net/sysu63/article/details/144396295 浏览次数:0次
找产品代理去哪个网站_中山vi设计公司_免费seo视频教程_求职seo推荐

搜索插入位置

  • 题目
    • 题目描述
    • 示例 1:
    • 示例 2:
    • 示例 3:
    • 提示:
    • 题目链接
  • 题解
    • 解题思路
    • python实现
    • 提交结果

题目

题目描述

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

请必须使用时间复杂度为 O(log n) 的算法。

示例 1:

输入: nums = [1,3,5,6], target = 5
输出: 2

示例 2:

输入: nums = [1,3,5,6], target = 2
输出: 1

示例 3:

输入: nums = [1,3,5,6], target = 7
输出: 4

提示:

1 <= nums.length <= 10^4
-10^4 <= nums[i] <= 10^4
nums 为 无重复元素 的 升序 排列数组
-10^4 <= target <= 10^4

题目链接

搜索插入位置

题解

解题思路

这个问题可以通过二分查找算法来解决。二分查找是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是目标值,则搜索过程结束;如果目标值大于或小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且同样从中间元素开始比较。如果在某一步骤数组为空,则目标值不存在于数组中。这个搜索算法的时间复杂度为 O(log n)。

对于这个问题,如果目标值不存在于数组中,我们返回它应当被插入的位置。幸运的是,即使目标值不在数组中,二分查找的逻辑仍然可以帮助我们找到正确的插入位置。

下面是具体的步骤:

  1. 初始化两个指针 leftright 分别指向数组的起始和结束位置。
  2. 进入循环,条件是 left <= right
  3. 在每次迭代中计算中间点 mid
  4. 如果 nums[mid] 等于目标值 target,则找到了目标值的位置,直接返回 mid
  5. 如果 target 小于 nums[mid],则目标值应该位于左半部分,更新 right = mid - 1
  6. 如果 target 大于 nums[mid],则目标值应该位于右半部分,更新 left = mid + 1
  7. 当循环结束时(即 left > right),此时 left 指针指向的就是目标值应该插入的位置,因为所有小于 target 的值都在 left 的左边,所有大于 target 的值都在 left 的右边。

python实现

下面是 Python 实现代码:

def searchInsert(nums, target):left, right = 0, len(nums) - 1while left <= right:mid = (left + right) // 2if nums[mid] == target:return midelif nums[mid] < target:left = mid + 1else:right = mid - 1# At this point, `left` is the correct insertion indexreturn left

这段代码实现了二分查找,并且当找不到目标值时返回了正确的插入位置。时间复杂度为 O(log n),空间复杂度为 O(1)。

提交结果

在这里插入图片描述

关键字:找产品代理去哪个网站_中山vi设计公司_免费seo视频教程_求职seo推荐

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: