沈阳网站制作思路网络,郑州seo关键词排名优化,免费咨询做网站,制作网站的网页74. 搜索二维矩阵 - 力扣#xff08;LeetCode#xff09; 给你一个满足下述两条属性的 m x n 整数矩阵#xff1a; 每行中的整数从左到右按非递减顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target #xff0c;如果 target 在矩阵中#xff0c;返…74. 搜索二维矩阵 - 力扣LeetCode 给你一个满足下述两条属性的 m x n 整数矩阵 每行中的整数从左到右按非递减顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target 如果 target 在矩阵中返回 true 否则返回 false 。 示例 1 输入matrix [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target 3
输出true示例 2 输入matrix [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target 13
输出false提示 m matrix.lengthn matrix[i].length1 m, n 100-104 matrix[i][j], target 104 class Solution {public boolean searchMatrix(int[][] matrix, int target) {int matrixSize matrix.length;int matrixColSize matrix[0].length;int len matrixSize * matrixColSize;int right len - 1;int left 0;int mid 0;int row ,col;while(left right) {mid (leftright) / 2;row mid/matrixColSize;col mid%matrixColSize;if(matrix[row][col] target) left mid1;else if(matrix[row][col] target) right mid;}System.out.println(left);System.out.println(matrixColSize);row left/matrixColSize;col left%matrixColSize;if(matrix[row][col] target) return true;left-1;row left/matrixColSize;col left%matrixColSize;if(left 0)if(matrix[row][col] target) return true;return false;}
} class Solution {public boolean searchMatrix(int[][] matrix, int target) {int matrixSize matrix.length;int matrixColSize matrix[0].length;int row matrixSize-1;while(row 0 matrix[row][0] target) row-1;if(row 0 ) return false;int left 0;int right matrixColSize - 1;while(left right) {int mid (leftright) / 2;if(matrix[row][mid] target) right mid;else if(matrix[row][mid] target) left mid1;}System.out.println(left);System.out.println(row);if(matrix[row][left]target || (left - 1 0matrix[row][left-1]target)) return true; return false;}
} 每日一题今天是中等题。也是和二分有关。 这是一道矩阵搜索的题目。从左到右从上到下是递增的又是搜索数所以很快能够想到二分查找。 那就是怎么二分查找的问题而已了。这里博主给出两种方法。 第一种把整个矩阵当作一个大数组len row*col。而二维矩阵的列和行地址无非就是除col和模col就可以得到了那其他地方就当作正常的二分查找就可以了具体的代码就是第一种方案。 第二种由于整个矩阵是递增的也就是说最左边的一定是最小的那只要去比较最左边的数和target的值就可以了找到最左边数小于target的那一行那么target要么在那一行要么就bujian