题解 | #在行列都排好序的矩阵中找指定的数#
在行列都排好序的矩阵中找指定的数
http://www.nowcoder.com/practice/b929be9dbbaa489a91afa3fec195c228
参考大佬的思路及代码
import java.util.Scanner;
/**
* 创建主函数
* 1 矩阵输入
* 2 判断是否在矩阵中,返回BOOlean
* 3 输出 yes or no
*/
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();//行数
int m = scanner.nextInt();//列数
int k = scanner.nextInt();//值
// 创建二维数组,存储矩阵
int[][] matrix = new int[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
matrix[i][j]=scanner.nextInt();
}
}
boolean result = search(matrix,k);
if(result){
System.out.println("Yes");
}else{
System.out.println("No");
}
}
// 判断是否为null,行数列数是否小于1
public static boolean search(int[][] matrix,int value){
if(matrix==null||matrix.length<1||matrix[0].length<1){
return false;
}
// 得到行数和列数,循环的开始条件终止条件
int row = matrix.length;
int columns = matrix[0].length;
int i = 0;
int j = columns-1;
while(i<row&&j>=0){
if(matrix[i][j]==value){
return true;
}else if(matrix[i][j]<value){
i++;
}else{
j--;
}
}
return false;
}
}