編寫一個高效的算法來搜索 m x n 矩陣 matrix 中的一個目標值 target 。該矩陣具有以下特性:
每行的元素從左到右升序排列。
每列的元素從上到下升序排列。
示例 1:
輸入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5
輸出:true
示例 2:
輸入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20
輸出:false
提示:
m == matrix.length
n == matrix[i].length
1 <= n, m <= 300
-109 <= matrix[i][j] <= 109
每行的所有元素從左到右升序排列
每列的所有元素從上到下升序排列
-109 <= target <= 109
思路:我們運用一個二分查找的思路 從第一行的最后一個元素開始
如果查找的元素大于被查找的元素 那我們就讓行+1 如果查找的元素小于被查找的元素那我們就讓列-1 如果相等 直接返回true
class Solution {public boolean searchMatrix(int[][] matrix, int target) {int row=0;int col=matrix[0].length-1;while (col>=0 && row<matrix.length){if (matrix[row][col]==target){return true;}else if (matrix[row][col]<target){row++;}else {col--;}}return false;}
}