在行和列都排好的矩阵中找数

给定一个N*M的整数型矩阵matrix和一个整数K,matrix的每一行和每一列都是排好顺序的。实现一个函数,判断K是否在matrix中,例如0  1  2  5  2  3  4  7  4  4  4  8  5  7  7  9,如果K为7,返回true;如果K为6,则返回false

package com.cisco.www.class_04;

/**
* 在行和列都排好序的矩阵(二维数组)中找数
* column:列 row:行
*/
public class FindNumInSortedMatrix {
public static boolean isContain(int[][] matrix,int k){
int row = 0 ;//从第0行向下遍历
int col = matrix[0].length-1;//从最后一列向前遍历
while (row<matrix.length&&col>-1){//行号是小于矩阵的行数,列数大于-1
if(matrix[row][col]==k){
return true;
}else if(matrix[row][col]>k){
col--;
}else {
row++;
}
}
return false;
}
public static void main(String[] args){
int[][] matrix = new int[][]{
{0,1,2,3,4,5,6},
{ 10, 12, 13, 15, 16, 17, 18 },// 1
{ 23, 24, 25, 26, 27, 28, 29 },// 2
{ 44, 45, 46, 47, 48, 49, 50 },// 3
{ 65, 66, 67, 68, 69, 70, 71 },// 4
{ 96, 97, 98, 99, 100, 111, 122 },// 5
{ 166, 176, 186, 187, 190, 195, 200 },// 6
{ 233, 243, 321, 341, 356, 370, 380 } // 7
};
int k = 97;
System.out.println(isContain(matrix,k));
}

}
posted @ 2019-07-03 07:28  stone1234567890  阅读(375)  评论(0编辑  收藏  举报