其实这一题,主要的是处理从哪里搜索的问题,如果从左上角来进行搜索,这里就比较难处理了
如果当前的数字current < target,此时应该是向右还是向下搜索,这里就产生了分歧
所以这里可以直接从右上角来进行搜索
- 如果当前元素等于目标值,返回
true。 - 如果当前元素大于目标值,说明当前列的其他元素也都比目标值大,因此可以排除当前列,列索引减一。
- 如果当前元素小于目标值,说明当前行的其他元素也都比目标值小,因此可以排除当前行,行索引加一。
var searchMatrix = function (matrix, target) {
let row = 0, col = matrix[0].length - 1
while (row < matrix.length && col >= 0) {
if (matrix[row][col] === target) {
return true
} else if (matrix[row][col] < target) {
row++
} else if (matrix[row][col] > target) {
col--
}
}
return false
};