wap網(wǎng)站定位鎮(zhèn)江百度關(guān)鍵詞優(yōu)化
hot100_240. 搜索二維矩陣 II
- 直接遍歷
- 列減行增
編寫一個高效的算法來搜索 m x n 矩陣 matrix 中的一個目標(biāo)值 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
直接遍歷
class Solution {public boolean searchMatrix(int[][] matrix, int target) {for(int[] row:matrix){for(int num:row){if(num==target){return true;}}}return false;}
}
列減行增
從右上角 matrix[0][n-1]開始,
matrix[x][y]==target,結(jié)束
因?yàn)槊苛羞f增:matrix[x][y]>target , 該列的所有數(shù)值都大于target (它在該列的最上邊),y–
因?yàn)槊啃羞f增:matrix[x][y]<target ,改行的所有數(shù)值都小于target (它在改行的最右邊),x++
class Solution {public boolean searchMatrix(int[][] matrix, int target) {int m=matrix.length,n=matrix[0].length;int x=0,y=n-1;while(x<m && y>=0){if(matrix[x][y]==target){return true;}if(matrix[x][y]>target){--y;}else{++x;}}return false;}
}