咫噎 发表于 2025-8-30 23:23:21

【LeetCode 35】算法:搜索插入位置

题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。

核心思想:
在排序数组中找到目标值的索引,或者找到它将会被按顺序插入的位置,并且要求时间复杂度为 O(log n),可以使用二分查找算法。
二分查找是一种在有序数组中查找特定元素的高效算法。
算法步骤:

[*]初始化两个指针 left 和 right,分别指向数组的起始和结束位置。
[*]在 left 小于等于 right 的条件下,执行循环:
[*]计算中间位置 mid。
如果 nums 等于 target,则找到了目标值,返回 mid。
如果 nums 小于 target,则将 left 移动到 mid + 1,因为目标值在 mid 的右侧。
如果 nums 大于 target,则将 right 移动到 mid - 1,因为目标值在 mid 的左侧。
[*]如果循环结束时没有找到目标值,则 left 指向了目标值应该被插入的位置。
复杂度分析:

[*]时间复杂度:O(log n),其中 n 是数组的长度。每次比较都会将搜索范围减半,直到找到目标值或搜索范围为空。
[*]空间复杂度:O(1)。因为它在查找过程中仅使用了几个固定大小的变量,而不依赖于输入数组的大小。
Java代码实现:
public class Solution {    public int searchInsertPosition(int[] nums, int target) {      int left = 0;      int right = nums.length - 1;                while (left

褥师此 发表于 2025-12-10 21:23:22

懂技术并乐意极积无私分享的人越来越少。珍惜

左丘雅秀 发表于 2025-12-11 14:29:59

谢谢楼主提供!

背竽 发表于 2025-12-11 15:02:24

感谢分享,下载保存了,貌似很强大

铜坠匍 发表于 2025-12-12 17:16:01

感谢,下载保存了

常士 发表于 2026-1-2 02:28:36

这个好,看起来很实用

毋献仪 发表于 2026-1-16 15:12:48

过来提前占个楼

求几少 发表于 2026-1-18 00:50:52

谢谢分享,试用一下

粹脍誊 发表于 2026-1-18 11:01:37

很好很强大我过来先占个楼 待编辑

求几少 发表于 2026-1-19 04:38:36

过来提前占个楼

锟及 发表于 2026-1-19 06:25:48

不错,里面软件多更新就更好了

怀陶宁 发表于 2026-1-20 08:18:20

感谢分享

吉芷雁 发表于 2026-1-20 14:03:33

不错,里面软件多更新就更好了

驶桐柢 发表于 2026-1-21 12:12:48

热心回复!

染悄 发表于 2026-1-21 13:01:02

谢谢分享,试用一下

栓州 发表于 2026-1-22 17:57:15

过来提前占个楼

讲怔 发表于 2026-1-23 10:17:43

谢谢楼主提供!

鞍汉 发表于 2026-1-26 07:00:42

不错,里面软件多更新就更好了

万俟谷雪 发表于 2026-1-27 03:28:05

谢谢分享,辛苦了

唐茗 发表于 2026-1-28 19:25:22

喜欢鼓捣这些软件,现在用得少,谢谢分享!
页: [1] 2
查看完整版本: 【LeetCode 35】算法:搜索插入位置