AcWing打卡活动
《剑指Offer》打卡活动
第一周第三题 二维数组中的查找
/*
由题目中二维数组的特性可得,每行的最右边最大,
每列的从上之下依次递增,故如若从右至左(若行最大值大于小于目标值,则可直接跳过该行),
从上至下遍历(若最小值大于目标值,则可直接跳过该列),则可大大提高效率。
*/
class Solution {
public boolean searchArray(int[][] array, int target) {
// 可以从右至左,从上至下遍历
for(int i = 0; i < array.length; i ++) {
// 从右至左
for(int j = array.length - 1; j >= 0; j --) {
// 如果相等则直接返回
if(array[i][j] == target) {
return true;
}
// 如果当前元素大于目标元素,则向左继续遍历
if(array[i][j] > target) {
continue;
} else { // 否则向下继续遍历
break;
}
}
}
return false;
}
}