题目描述
在一个二维数组中 (每个一维数组的长度相同), 每一行都按照从左到右递增的顺序排序, 每一列都按照从上到下递增的顺序排序. 请完成一个函数, 输入这样的一个二维数组和一个整数, 判断数组中是否含有该整数.
题解:
- public static void find(int target,int[][]array){
- if(array == null || array.length == 0 || array[0].length == 0)
- return false;
- int rows = array.length;
- int cols = array[0].length;
- int row = 0,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){
- row++;
- }else{
- col--;
- }
- }
- return false;
- }
牛客网地址:
小结:
当传入数组时, 需要判空, 逻辑如下:
- if(array == null || array.length == 0 || array[0].length == 0)
- return false;
该方法的时间复杂度为 o(m+n)
来源: http://www.bubuko.com/infodetail-3313452.html