难度系数:⭐
时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M
题目内容:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
思路:遍历每一列,然后对每一列进行二分查找。
package nowcoder;
import java.util.Arrays;
import java.util.Scanner;
public class No2 {
public static boolean no2(int[][] arr, int pivot){
if (arr == null) return false;
for (int i = 0; i < arr[0].length; i++)
if (search(arr, i, 0, arr.length - 1, pivot)) return true;
return false;
}
public static boolean search(int[][] arr, int index, int l, int r, int pivot){
while (l <= r){
int mid = l + (r - l) / 2;
if (arr[index][mid] > pivot) r = mid - 1;
else if (arr[index][mid] < pivot)l = mid + 1;
else return true;
}
return false;
}
public static void main(String[] args){
Scanner cin = new Scanner(System.in);
int[][] arr = {{}};
if (no2(arr, 15)) System.out.println("true");
else System.out.println("false");
}
}