# 《剑指offer》练习-面试题4-二维数组中的查找

1    2    8     9

2    4    9     12

4    7    10    13

6    8    11    15

package offer;

import java.util.Scanner;

public class Solution4 {
public boolean Find(int target, int[][] array) {
if (array == null || array.length <= 0)
return false;

int rows = array.length;
int columns = array[0].length;

int column = columns - 1;
int row = 0;
while (column >= 0 && row < rows) {
if (array[row][column] > target) {
column--;
} else if (array[row][column] < target) {
row++;
} else {
return true;
}

}
return false;
}

public static void main(String[] args) {
Solution4 sl = new Solution4();
Scanner scanner = new Scanner(System.in);
int target = scanner.nextInt();
int[][] array = new int[4][4];
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
array[i][j] = scanner.nextInt();
}
}
scanner.close();

System.out.println(sl.Find(target, array));
}

}


链接：https://www.nowcoder.com/questionTerminal/abc3fe2ce8e146608e868a70efebf62e

public class Solution {
public boolean Find(int [][] array,int target) {

for(int i=0;i<array.length;i++){
int low=0;
int high=array[i].length-1;
while(low<=high){
int mid=(low+high)/2;
if(target>array[i][mid])
low=mid+1;
else if(target<array[i][mid])
high=mid-1;
else
return true;
}
}
return false;

}
}

• 广告
• 抄袭
• 版权
• 政治
• 色情
• 无意义
• 其他

120