已知二维数组,横向竖向都递增有序。查找某数,是不是在数组里。
题目思路见:剑指offer的第三题
public static void main(String[] args) {
int[][] array = {{1, 2, 8, 9},
{2, 4, 9, 12},
{4, 7, 10, 13},
{6, 8, 11, 15}};
System.out.println(findValue(10,array));
}
public static boolean findValue(int target,int[][] array){
int rows = array.length;//行数
int columns = array[0].length;//列数
int row = 0;//循环起始行
int column = columns -1;//循环起始列
//特殊情况下处理
if (array == null || array.length<1 || array[0].length<1){
return false;
}
//正常情况
while (row >=0 && row<=rows && column >=0 && column< columns){
if(array[row][column] == target){
return true;
}else if (array[row][column] > target){
column--;
}else if (array[row][column] < target){
row++;
}
}
return false;
}
- 在纸上手写代码,要滤清思路再下手,切忌上来就写。
- 先写测试用例,比这测试用例思考思路
- 主流程的循环控制,结束条件选择
- 程序的鲁棒性,特除情况,空值越界的处理