We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 4faa3f9 commit c9ffdb3Copy full SHA for c9ffdb3
91/binary-search.md
@@ -298,6 +298,27 @@ int binarySearchLeft(vector<int>& nums, int target) {
298
}
299
```
300
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
322
### 寻找最右边的满足条件的值
323
324
和`查找一个数`类似, 我们仍然套用`查找一个数`的思维框架和代码模板。
0 commit comments