Binary Search
1 | class Solution { |
Matrix
1 | class Solution { |
在行列上进行二分搜索失败的原因
注意题目只说了每一行从左到右升序,每一列从上到下升序,并没有说第二行所有元素一定大于第一行所有元素,比如以下数组:
1 | [ |
当搜索 5 时,我们不能采取先定位至第 3 行 [3, 6, 9, 16, 22]
再搜索 5 的方式,因为这样会错过目标值。5 大于第 3 行的首个元素,此时可能位于前三行而不是一定位于第三行,所以我们不能排除第一行与第二行。
类似地:
1 | [ |
当搜索 19 时,我们不能采取先定位至第 5 列 [5, 10, 15, 20, 25]
再搜索 19 的方式,因为这样会错过目标值。19 大于第 5 列的首个元素,不代表 19 一定存在于第 5 列。
Binary Search + Recursion
1 | class Solution { |
Reference
240. Search a 2D Matrix II
剑指 Offer 04. 二维数组中的查找
详细通俗的思路分析,多解法