Update 4. 二维数组中的查找.md

调整从右上角开始查找的思路说明,补充排除行列的逻辑解析及具体查找示例。
This commit is contained in:
CyC2018
2026-10-30 20:18:03 +08:00
parent 6a84964eb8
commit 6d28b29529
+1 -1
View File
@@ -26,7 +26,7 @@ Given target = 20, return false.
要求时间复杂度 O(M + N),空间复杂度 O(1)。其中 M 为行数,N 为 列数。
该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来快速地缩小查找区间,每次减少一行或者一列的元素。当前元素的查找区间为左下角的所有元素。
右上角的元素是它所在行的最大值、所在列的最小值。target 比它小时,这一列下面的数都更大,可以排除这一列;target 比它大时,这一行左边的数都更小,可以排除这一行。每次排除一行或一列,剩下的查找区间仍是一个矩形,它的右上角就是下一个要比较的元素。例如查找 5:15、11、7 都大于 5,依次排除最后三列;4 小于 5,排除第一行;下移到 5,找到。
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/35a8c711-0dc0-4613-95f3-be96c6c6e104.gif" width="400px"> </div><br>