【matrix】74. 搜索二维矩阵
题目:

解答:
方法一:
利用有序规律,遍历矩阵
class Solution { public boolean searchMatrix(int[][] matrix, int target) { int m = matrix.length; if(m == 0){ return false; } int n = matrix[0].length; for(int i = 0;i<m-1;i++){ if(target>=matrix[i][0]&&target<=matrix[i+1][0]){ if(target==matrix[i+1][0]){ return true; } for(int j = 0;j<n;j++){ if(target==matrix[i][j]){ return true; } } } } for(int j = 0;j<n;j++){ if(matrix[m-1][j]==target){ return true; } } return false; } }
方法二:
同样利用有序性
将矩阵构造成一个虚拟数组,然后使用二分查找找target元素
class Solution { public boolean searchMatrix(int[][] matrix, int target) { int m = matrix.length; if (m == 0) return false; int n = matrix[0].length; // 二分查找 int left = 0, right = m * n - 1; int pivotIdx, pivotElement; while (left <= right) { pivotIdx = (left + right) / 2; //row = pivotIde/n col = pivotIdx %n pivotElement = matrix[pivotIdx / n][pivotIdx % n]; if (target == pivotElement) return true; else { if (target < pivotElement) right = pivotIdx - 1; else left = pivotIdx + 1; } } return false; } }

浙公网安备 33010602011771号