题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
时间限制:1秒 空间限制:32768K
本题知识点: 查找
代码实现
public class Solution {
public boolean Find(int target, int [][] array) {
int row = array.length - 1;
int col = 0;
while(row >= 0 && col < array[0].length){
if(target > array[row][col]){
col++;
}else if(target < array[row][col]){
row--;
}else{
return true;
}
}
return false;
}
}
解题思路
因为二维数组是从上到下、从左到右递增的。
所以可以从左下角或者右上角的元素开始比较,当 target 比 array[row][col] 小的时候,那么 target 一定在 array[row][col] 的上边,所以 row—;当 target 比 array[row][col] 大的时候,那么 target 一定在 array[row][col] 的右边,所以 col++。
依次类推,直到找到和 target 相等的元素则返回 true,否则返回 false。
欢迎关注公众号:「努力给自己看」