题目
原文:
Given a matrix in which each row and each column is sorted, write a method to find an element in it.
译文:
给一个矩阵并且每行每列都是有序的,写一个方法找出它的一个元素。
解答
由于矩阵每行每列都是有序的,假设其递增,列出下面矩阵,观察其规律:
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
由于递增关系,矩阵的左上角是最小的,右下角是最大的,而对于右上角,假设所求元素为x,对比于右上角,若x小于右上角的数,则最后一列肯定大于x;若x大于右上角的数,则第一行的数肯定小于x,如此逐渐缩小范围比较……左下角的类似;代码如下:
class Q9_6{ public static String searchMatrix(int[][] matrix,int m,int n,int num){ int r=0; int c=n-1; while(r<m&&c>=0){ if(matrix[r][c]==num) return "("+r+","+c+")"; else if(matrix[r][c]<num) r++; else c--; } return "error"; } public static void main(String[] args){ int[][] matrix={{1,5,9,13},{2,6,10,14},{3,7,11,13},{4,8,12,16}}; System.out.println(searchMatrix(matrix,4,4,12)); } }