问题描述:矩阵每一行有序,每一行的最后一个元素小于下一行的第一个元素,查找。
算法分析:这样的矩阵其实就是一个有序序列,可以使用折半查找算法。
public class SearchInSortedMatrix { public static boolean searchMatrix(int[][] matrix, int target) { int m = matrix.length; int n = matrix[0].length; int low = 0; int high = m*n - 1; while(low <= high) { int mid = (low + high)/2; int row = mid / n; int column = mid % n; if(matrix[row][column] == target) { return true; } else if(matrix[row][column] < target) { low = mid + 1; } else { high = mid - 1; } } return false; } }
时间: 2024-10-12 19:15:21