Skip to content

Commit c9ffdb3

Browse files
author
lucifer
committed
feat: 增加示例
1 parent 4faa3f9 commit c9ffdb3

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

91/binary-search.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,27 @@ int binarySearchLeft(vector<int>& nums, int target) {
298298
}
299299
```
300300
301+
#### 例题解析
302+
303+
给你一个严格递增的数组 nums ,让你找到第一个满足 nums[i] == i 的索引,如果没有这样的索引,返回 -1。(你的算法需要有 logN 的复杂度)。
304+
305+
首先我们做一个小小的变换,将原数组 nums 转换为 A,其中 A[i] = nums[i] - i。这样新的数组 A 就是一个不严格递增的数组。这样原问题转换为 在一个不严格递增的数组 A 中找第一个等于 0 的索引。接下来,我们就可以使用最左满足模板,找到最左满足 nums[i] == i 的索引。
306+
307+
代码:
308+
309+
```py
310+
class Solution:
311+
def solve(self, nums):
312+
l, r = 0, len(nums) - 1
313+
while l <= r:
314+
mid = (l + r) // 2
315+
if nums[mid] >= mid:
316+
r = mid - 1
317+
else:
318+
l = mid + 1
319+
return l if l < len(nums) and nums[l] == l else -1
320+
```
321+
301322
### 寻找最右边的满足条件的值
302323

303324
`查找一个数`类似, 我们仍然套用`查找一个数`的思维框架和代码模板。

0 commit comments

Comments
 (0)