Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 7fbcb87

Browse files
update content
1 parent 4d601b0 commit 7fbcb87

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

‎算法思维系列/二分查找详解.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,8 @@ int binarySearch(int[] nums, int target) {
9696
}
9797
```
9898

99+
<visual slug='binary-search'/>
100+
99101
这段代码可以解决力扣第 704 题「二分查找」,但我们深入探讨一下其中的细节。
100102

101103
**1、为什么 while 循环的条件中是 <=,而不是 <**?
@@ -289,6 +291,8 @@ int left_bound(int[] nums, int target) {
289291
}
290292
```
291293

294+
<visual slug='mydata-left-bound'/>
295+
292296
这样就和第一种二分搜索算法统一了,都是两端都闭的「搜索区间」,而且最后返回的也是 `left` 变量的值。只要把住二分搜索的逻辑,两种形式大家看自己喜欢哪种记哪种吧。
293297

294298
### 三、寻找右侧边界的二分查找
@@ -387,6 +391,8 @@ int right_bound(int[] nums, int target) {
387391
}
388392
```
389393

394+
<visual slug='mydata-right-bound'/>
395+
390396
当然,由于 while 的结束条件为 `right == left - 1`,所以你把上述代码中的 `left - 1` 都改成 `right` 也没有问题,这样可能更有利于看出来这是在「搜索右侧边界」。
391397

392398
至此,搜索右侧边界的二分查找的两种写法也完成了,其实将「搜索区间」统一成两端都闭反而更容易记忆,你说是吧?

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /