题目
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路:
从左下 开始查找 左下的数是一行中最小的数 一列中最大的数
注意 左下的数组表示是
num=array[rows-1,0]
rows =array.length
三种情况:
num>target 已经是该行最小的 所以变换行 row–
num<target 已经是该列最大的 所以变换列 col++
否则 没找到 返回false;
代码
public class Solution {
public boolean Find(int target, int [][] array) {
int rows = array.length;
if(rows==0){
return false;
}
int cols =array[0].length;
if(cols==0){
return false;
}
int row =rows-1;
int col =0;
while(row>=0&&col<cols){
if (array[row][col] < target){
col++;
}else if (array[row][col]>target){
row--;
}else{
return true;
}
}
return false;
}
}
错误总结
1.行列变换搞混
2.将array[row][col]赋值 给了num 并写在循坏外 所以num的值是不变的