/** 思路:二维数组的形式如下,从数组的左下角或者数组的右上角开始,具体看代码:
1 2 3
4 5 6
7 8 9
*/ // 注:垃圾解法是遍历整个二维数组;
package com.isay.learn;
/**
* @author isay_me
* @date 2019/10/22
* @time 11:35
* target:
*/
public class FindNum {
public static boolean findNum(int target,int[][] arr){
// 这里暂定为从右上角开始,坐标为[0][arr[0].length - 1]
int i = 0; // 表示行
int j = arr[0].length - 1; // 表示列
while(i < arr.length && j >= 0){ // 超过了行和列的范围的时候退出循环
// 如果比当前元素大,向下走,行增加
if (target > arr[i][j]){
i ++;
}else if (target < arr[i][j]){
j --;
}else { // 相等的时候
return true;
}
}
return false;
}
public static void main(String[] args) {
int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
System.out.println(findNum(5, arr));
System.out.println(findNum(99,arr));
}
}