Skip to content

Commit 8127501

Browse files
committed
Update 0035. 搜索插入位置.md
1 parent 9627f49 commit 8127501

File tree

1 file changed

+37
-7
lines changed

1 file changed

+37
-7
lines changed

Solutions/0035. 搜索插入位置.md

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,46 @@
55

66
## 题目大意
77

8-
给定一个排好序的数组 nums,以及一个目标值 target。在数组中找到目标值,并返回下标。如果找不到,则返回目标值按顺序插入数组的位置。
8+
**描述**:给定一个排好序的数组 `nums`,以及一个目标值 `target`
9+
10+
**要求**:在数组中找到目标值,并返回下标。如果找不到,则返回目标值按顺序插入数组的位置。
11+
12+
**说明**
13+
14+
- $1 \le nums.length \le 10^4$。
15+
- $-10^4 \le nums[i] \le 10^4$。
16+
- $nums$ 为无重复元素的升序排列数组。
17+
- $-10^4 \le target \le 10^4$。
18+
19+
**示例**
20+
21+
```Python
22+
输入 nums = [1,3,5,6], target = 5
23+
输出 2
24+
```
925

1026
## 解题思路
1127

12-
二分查找法。利用两个指针 left 和 right,分别指向数组首尾位置。每次用 left 和 right 中间位置上的元素值与目标值做比较,如果等于目标值,则返回当前位置。如果小于目标值,则更新 left 位置为 mid + 1,继续查找。如果大于目标值,则更新 right 位置为 mid - 1,继续查找。直到查找到目标值,或者 left > right 值时停止查找。然后返回 left 所在位置,即是代插入数组的位置。
28+
### 思路 1:二分查找
1329

14-
## 代码
30+
设定左右节点为数组两端,即 `left = 0``right = len(nums) - 1`,代表待查找区间为 `[left, right]`(左闭右闭)。
31+
32+
取两个节点中心位置 `mid`,先比较中心位置值 `nums[mid]` 与目标值 `target` 的大小。
33+
34+
- 如果中心位置值 `nums[mid]` 与目标值 `target` 相等,则当前中心位置为待插入数组的位置。
35+
- 如果中心位置值 `nums[mid]` 小于目标值 `target`,则将左节点设置为 `mid + 1`,然后继续在右区间 `[mid + 1, right]` 搜索。
36+
- 如果中心位置值 `nums[mid]` 大于目标值 `target`,则将右节点设置为 `mid - 1`,然后继续在左区间 `[left, mid - 1]` 搜索。
37+
38+
直到查找到目标值返回待插入数组的位置,或者等到 `left > right` 时停止查找,此时 `left` 所在位置就是待插入数组的位置。
39+
40+
### 思路 1:二分查找代码
1541

1642
```Python
1743
class Solution:
1844
def searchInsert(self, nums: List[int], target: int) -> int:
19-
n = len(nums)
20-
left = 0
21-
right = n - 1
22-
ans = n
45+
size = len(nums)
46+
left, right = 0, size - 1
47+
2348
while left <= right:
2449
mid = left + (right - left) // 2
2550
if nums[mid] == target:
@@ -32,3 +57,8 @@ class Solution:
3257
return left
3358
```
3459

60+
### 思路 1:复杂度分析
61+
62+
- **时间复杂度**:$O(\log n)$。二分查找算法的时间复杂度为 $O(\log n)$。
63+
- **空间复杂度**:$O(1)$。只用到了常数空间存放若干变量。
64+

0 commit comments

Comments
 (0)