在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
[
[1,2,8,9],
[2,4,9,12],
[4,7,10,13],
[6,8,11,15]
]
给定 target = 7,返回 true。
给定 target = 3,返回 false。
示例1
输入
7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]
返回值
true
说明
存在7,返回true
示例2
输入
3,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]
返回值
false
说明
不存在3,返回false
解题思路:这道题还是很容易的,我们从右上角开始遍历,如果当前元素和target相等,直接返回true,如果比target小,那target只能在下一行,此时往下遍历,如果比target大,那target只能在左边,因此向左遍历,注意我们是从右上角开始遍历的,所以我们是向下和向左推。
代码
public class Solution {
public boolean Find(int target, int [][] array) {
if(arraynull || array.length0 || array[0].length0) return false;
int row = array.length, column = array[0].length, r = 0, c = column - 1;
while(r<row && c>=0){
if(targetarray[r][c]) return true;
else if(target>array[r][c]) r++;
else c--;
}
return false;
}
}
原文:https://www.cnblogs.com/zhengxch/p/14692412.html