写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数。
这个矩阵具有以下特性:
每行中的整数从左到右是排序的。
每一列的整数从上到下是排序的。
在每一行或每一列中没有重复的整数。
样例
考虑下列矩阵:
[
[1, 3, 5, 7],
[2, 4, 7, 8],
[3, 5, 9, 10]
]
这个矩阵具有以下特性:
每行中的整数从左到右是排序的。
每一列的整数从上到下是排序的。
在每一行或每一列中没有重复的整数。
样例
考虑下列矩阵:
[
[1, 3, 5, 7],
[2, 4, 7, 8],
[3, 5, 9, 10]
]
给出target = 3,返回 2
import java.util.Scanner;
/**
* 写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数。
这个矩阵具有以下特性:
每行中的整数从左到右是排序的。
每一列的整数从上到下是排序的。
在每一行或每一列中没有重复的整数。
样例
考虑下列矩阵:
[
[1, 3, 5, 7],
[2, 4, 7, 8],
[3, 5, 9, 10]
]
给出target = 3,返回 2
*
* @author Dell
*
*/
public class Test38 {
public static int searchMatrix(int[][] matrix, int target)
{
if(matrix.length==0)
{
return 0;
}
int count=0;
int m=matrix.length;
int n=matrix[0].length;
for(int i=0;i<m;i++)
{
if(matrix[i][0]==target)
{
count=count+1;
break;
}
else if(matrix[i][0]<target)
{
for(int j=1;j<n;j++)
{
if(matrix[i][j]==target)
{
count=count+1;
break;
}
if(matrix[i][j]>target)
break;
}
}
else{
break;
}
}
return count;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int m=sc.nextInt();
int n=sc.nextInt();
int target=sc.nextInt();
int[][] a=new int[m][n];
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
a[i][j]=sc.nextInt();
}
}
System.out.println(searchMatrix(a,target));
}
}