在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
方法1:按行顺序寻找,从第一个元素寻找,有匹配的返回true,直到最后一个元素都没有,则返回false
public class Solution {
public boolean Find(int target, int [][] array) {
int x,y;
for ( x = 0; x < array.length; x++)
{
for ( y = 0; y < array[x].length; y++)
{
if (target == array[x][y])
return true;
}
}
return false;
}
public static void main(String []args){
Solution s = new Solution();
int[][] array={{1,2,3},{4,5,6}};
System.out.println(s.Find(1,array));
}
}运行时间243ms,占用资源17500kb
方法2 从数组最左下角开始进行比较。
public class Solution {
public boolean Find(int target, int [][] array) {
//行数
int m = array.length - 1;
//列数
int n = 0;
//查找
while (m >= 0 && n < array[0].length){
//从最后一行第一个元素开始查找
//与目标元素比较如果当前数大于目标数,则回到上一行首元素进行比较
if (array[m][n] > target){
m--;
}
//与目标元素比较,如果当前数更小,比较这一行后面的数
else if (array[m][n] < target){
n++;
}
else
return true;
}
return false;
}
public static void main(String []args){
Solution s = new Solution();
int[][] b={{1,2,3},{4,5,6}};
System.out.println(s.Find(1,b));
}
}运行时间225ms,占用资源18120kb
本文介绍了如何在一个特殊排列的二维数组中查找特定整数。数组的每一行和每一列都是升序排列。提供了两种查找方法:按行顺序查找,从首元素开始;以及从数组的最左下角开始比较。第一种方法的运行时间为243ms,占用资源17500kb。

8453

被折叠的 条评论
为什么被折叠?



