题解 | #二维数组中的查找#
二维数组中的查找
http://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e
public class JZ1 {
public static void main(String[] args) {
int arr[][] =//{{1,1}};
{{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}};
JZ1 test = new JZ1();
// Scanner scanner = new Scanner(System.in);
// System.out.println("请输入数字/n");
// int num = scanner.nextInt();
System.out.println(test.Find(arr,7));
}
// public boolean Find(int[][] arr, int num){
// for (int i = 0; i < arr.length; i++) {
// if(arr[i][0]<num){
// int left = 0;
// int right = arr[i].length;
// int mid = -1;
// boolean j = true;
// while(mid!=right&&mid!=left){
// mid = (left+right)/2;
// if(arr[i][mid]<=num){
// if(arr[i][mid]==num){
// return true;
// }
// left=mid;
// }else {
// if(arr[i][mid]==num){
// return true;
// }
// right = mid;
// }
// if(left==mid||right==mid){
// if(arr[i][mid]==num||arr[i][mid]==num){
// return true;
// }else if(arr[i][mid+1]==num||arr[i][mid-1]==num){
// return true;
// }
// }
//
// }
// }
// }
// return false;
// }
public boolean Find(int[][] arr, int target){
if(arr==null||arr.length==0||arr[0].length==0){
return false;
}
for (int i = 0; i < arr.length; i++) {
int left = 0;
int right = arr[0].length-1;
while(left<=right){
int mid = (left+right)/2;
int midval = arr[i][mid];
if (midval<target){
left = mid+1;
continue;
}if(midval>target){
right = mid-1;
continue;
}else {
return true;
}
}
}
return false;
}
}
查看10道真题和解析