剑指offer编程
来源:互联网 发布:尹美莱 知乎 编辑:程序博客网 时间:2024/05/23 23:49
二维数组中的查找
题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
代码:
- /**
- * 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
- * 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- * <p/>
- * 规律:首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束:
- * 如果该数字大于要查找的数字,剔除这个数字所在的列:如果该数字小于要查找的数字,剔除这个数字所在的行。
- * 也就是说如果要查找的数字不在数组的右上角,则每-次都在数组的查找范围中剔除)行或者一列,这样每一步都可以缩小
- * 查找的范围,直到找到要查找的数字,或者查找范围为空。
- *
- * @param matrix 待查找的数组
- * @param number 要查找的数
- * @return 查找结果,true找到,false没有找到
- */
public class Solution {
public static boolean Find(int [][] array,int target) {
//输入条件判断
if(array == null || array.length < 1 || array[0].length<1){
return false;
}
int rows = array.length; //二维数组的行数
int cols = array[0].length; //二维数组的列数
int row = 0; //起始的行号
int col = cols-1; //起始的列号
while(row >= 0 && row < rows && col >= 0 && col <cols){
if(array[row][col] == target){ //如果找到待查的数就退出
return true;
}else if(array[row][col]>target){ //如果当前的数比待查的数大,则待查的数在当前的数的左边
col--; //列数减1,当前的数往左移
}else{
row++; //如果当前的数比待查的数小,则待查的数在当前行的下方行数加1,当前的数往下移一行
}
}
return false;
}
public static void main(String[] args){
int [][] array={{1,3,5,7,9},
{2,4,6,8,10},
{3,5,7,9,11},
{4,6,8,10,12}};
System.out.println(Find(array,3)); //要查找的数在数组中
System.out.println(Find(array,13)); //要查找的数不在数组中
}
}
- 剑指offer编程
- 剑指offer在线编程
- 剑指offer编程
- 剑指offer编程题
- 剑指offer编程题01
- 剑指Offer编程题集
- 《剑指offer》JAVA编程实现
- 《剑指offer》在线编程题
- 剑指offer中典型编程题小记
- 《剑指offer》编程在练评判
- 面试-机试-编程题--剑指offer
- 剑指offer编程练习(Program1)
- 剑指offer编程练习(Program2)
- 剑指offer编程练习(Program3)
- 剑指offer之编程(一)
- 剑指offer之编程(二)
- 剑指offer之编程(三)
- 剑指offer之编程(四)
- zzuli 1905 Problem A: 小火山的跳子游戏(规律)
- Tree Recovery
- Parcelable
- System.err: java.lang.UnsatisfiedLinkError: Native method not found: com.iflytek.msc.MSC.QISESession
- 最长递增公共子序列dp(hdu 1423 hdu 4512)
- 剑指offer编程
- ImageMagick
- Codevs 1051 接龙游戏
- HTML5总结
- base64的编解码函数
- JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分
- HDOJ 4135 Co-prime
- 又来中山了。。
- 安装egit