音乐
音乐
暂未播放
0:00/0:00
暂无歌词
LeetCode | 搜索插入位置
248 字
1 分钟
LeetCode | 搜索插入位置
分类:二分查找 / 数组
题目#
给定一个升序数组 nums 和一个目标值 target。
如果 target 在数组中,返回它的下标;如果不在数组中,返回它应该插入的位置。
示例:
1输入:nums = [1,3,5,6], target = 52输出:21输入:nums = [1,3,5,6], target = 22输出:1讲解#
二分法,直接看代码。非常之清晰。 二分法的范围通过双指针实现。
复杂度#
- 暴力做法:
- 时间复杂度:
O(n) - 空间复杂度:
O(1)
- 时间复杂度:
- 二分查找:
- 时间复杂度:
O(log(n)) - 空间复杂度:
O(1)
- 时间复杂度:
代码#
源码#
1from typing import List2
3
4class Solution:5 def searchInsert(self, nums: List[int], target: int) -> int:6 left = 07 right = len(nums)8
9 while left < right:10 mid = (left + right) // 211 if nums[mid] < target:12 left = mid + 113 else:14 right = mid15
16 return left测试#
1from src.python._035_Search_Insert_Position import Solution2
3
4sol = Solution()5
6assert sol.searchInsert([1, 3, 5, 6], 5) == 27assert sol.searchInsert([1, 3, 5, 6], 2) == 18assert sol.searchInsert([1, 3, 5, 6], 7) == 49assert sol.searchInsert([1, 3, 5, 6], 0) == 010
11print("PASS")参考资料#
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
LeetCode | 搜索插入位置
https://leetcode.cn/problems/search-insert-position/最后更新于 2026-08-04
部分内容可能已过时
相关文章智能推荐
1
LeetCode | 搜索旋转排序数组
LeetCodeLeetCode 搜索旋转排序数组题解:在旋转数组中判断有序半区,再用二分缩小范围。
2
LeetCode | 在排序数组中查找元素的第一个和最后一个位置
LeetCodeLeetCode 在排序数组中查找元素的第一个和最后一个位置题解:复用 lower_bound,两次二分定位左右边界。
3
LeetCode | 寻找旋转排序数组中的最小值
LeetCodeLeetCode 寻找旋转排序数组中的最小值题解:比较 nums[mid] 与 nums[right],定位旋转断点。
4
LeetCode | 搜索二维矩阵
LeetCodeLeetCode 搜索二维矩阵题解:把矩阵看作一维数组做二分,或者先定位行再二分查找。
5
LeetCode | 寻找两个正序数组的中位数
LeetCodeLeetCode 寻找两个正序数组的中位数题解:用二分查找切分位置,在 O(log(min(m,n))) 时间内求中位数。
随机文章随机推荐
暂无随机文章
评论区
分享你的想法,与大家交流讨论
--
总访问量
--
访客数
公告
音乐
音乐
暂未播放
0:00/0:00
暂无歌词
站点统计
文章
66
分类
16
标签
93
总字数
477,284
运行时长
0 天
最后活动
0 天前
最新动态



