De ion:
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

Notes:

  • 时间限制:1秒
  • 空间限制:32768K

解题思路:在一维数组中找目标元素,可以利用二分查找;同样的,在二维数组中,我们只需要对数组的每一行都利用二分查找即可;

Java
public class Solution {
    public boolean Find(int target, int [][] array) {
        for (int i = 0; i < array.length; i++) {
            int st = 0;
            int ed = array[i].length - 1;
            while (st <= ed) {
                int mid = (st + ed) / 2;
                if (target == array[i][mid]) return true;
                else if (target > array[i][mid]) st = mid + 1;
                else ed = mid - 1;
            }
        }
        return false;
    }
}
收藏 打印