//在行列都排好序的矩阵中找数
public class FindNumK{
//方法一:在排好序的矩阵中找数
public static boolean FindK(int[][]matrix,int k)
{
if(matrix==null||k<matrix[0][0]||k>matrix[matrix.length-1][matrix[0].length-1])
{
return false;
}
//横向寻找
int i=matrix[0].length-1;
for(;i!=-1;i--)
{
if(matrix[0][i]==k)
{
return true;
}else if(matrix[0][i]<k)
{
break;
}else{
continue;
}
}
//竖向寻找
int j=1;
for(;j<matrix.length;j++)
{
if(matrix[j][i]==k)
{
return true;
}else if(matrix[j][i]>k)//左移一个位置
{
break;
}
}
//第二次横向寻找
for(int w=i-1;w>=0;w--)
{
if(matrix[j][w]==k)
{
return true;
}
}
return false;
}
//方法二:找到是否含k
public static boolean FindNumK(int[][]matrix,int k)
{
int row=0;
int col=matrix[0].length-1;
while(row<matrix.length&&col>-1)
{
if(matrix[row][col]==k)
{
return true;
}else if(matrix[row][col]<k)
{
row++;
}else{
col--;
}
}
return false;
}
public static void main(String[]args)
{
//System.out.println("Hello");
int[][]matrix={
{0,1,2,5},
{2,3,4,7},
{4,4,4,8},
{6,7,7,9}
};
int k=3;
int k2=6;
System.out.println(FindK(matrix,k));
System.out.println(FindNumK(matrix,k));
System.out.println(FindNumK(matrix,k2));
}
}
在行列都排好序的矩阵中找数
最新推荐文章于 2020-07-19 16:52:11 发布