二维数组中的查找 - 数组
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路:
- 获得二维数组的行和列(区分好行和列,和下标的关系)
- 我从右上角开始,下标为 0 列-1
- 如果目标数大于这个数字,则行数加一;如果目标数小于则列数减一,如果相等则返回true
- 如果遍历完未发现,则代表没有这个数,返回false
数组大概:
1 | 2 | 3* |
---|---|---|
2 | 3 | 4 |
3 | 4 | 5 |
或者
1 | 2 | 3* |
---|---|---|
4 | 5 | 6 |
7 | 8 | 9 |
代码:
public class Solution {
public boolean Find(int target, int [][] array) {
//行
int row=array.length;
//列
int col=array[0].length;
//从右上角开始
int i=0;
int j=col-1;
while(i<row&&j>=0){
if(target>array[i][j]){
i++;
}else if(target<array[i][j]){
j--;
}
else{
return true;
}
}
return false;
}
}
思考:
1.要区分好 行和列,与下标的关系