8000 update the 38 solution · Feng2012/awesome-golang-leetcode@50f187c · GitHub
[go: up one dir, main page]

Skip to content

Commit 50f187c

Browse files
committed
update the 38 solution
1 parent 59dc3ca commit 50f187c

File tree

2 files changed

+25
-19
lines changed

2 files changed

+25
-19
lines changed

src/0035.Search-Insert-Position/README.md

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,23 +39,29 @@ Output: 0
3939

4040
## 题解
4141
### 思路1
42-
题意是让你从一个没有重复元素的已排序数组中找到插入位置的索引。因为数组已排序,所以我们可以想到二分查找法,因为查找到的条件是找到第一个等于或者大于 `target` 的元素的位置,所以二分法略作变动即可。
42+
43+
- 直接二分查找小于等于目标值的第一个位置。
44+
- 如果nums[l] >= target,说明找到了target或者数组中所有元素都比target小,则返回l
45+
- 否则说明数组所有元素都比target大,此时l一定是0,故返回l。
46+
时间复杂度
47+
4348
```go
4449
func searchInsert(nums []int, target int) int {
45-
left := 0
46-
right := len(nums) - 1
47-
mid := (right + left) >> 1
48-
for left <= rig 8000 ht {
49-
if target <= nums[mid] {
50-
right = mid - 1
51-
} else {
50+
left, right := 0, len(nums)-1
51+
for left < right {
52+
mid := left + (right-left)/2
53+
if nums[mid] < target {
5254
left = mid + 1
55+
} else {
56+
right = mid
5357
}
54-
mid = (right + left) >> 1
55-
58+
}
59+
if target > nums[left] {
60+
left++
5661
}
5762
return left
5863
}
64+
5965
```
6066
### 思路2
6167

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
package Solution
22

33
func searchInsert(nums []int, target int) int {
4-
left := 0
5-
right := len(nums) - 1
6-
mid := (right + left) >> 1
7-
for left <= right {
8-
if target <= nums[mid] {
9-
right = mid - 1
10-
} else {
4+
left, right := 0, len(nums)-1
5+
for left < right {
6+
mid := left + (right-left)/2
7+
if nums[mid] < target {
118
left = mid + 1
9+
} else {
10+
right = mid
1211
}
13-
mid = (right + left) >> 1
14-
12+
}
13+
if target > nums[left] {
14+
left++
1515
}
1616
return left
1717
}

0 commit comments

Comments
 (0)
0