使用二进制搜索检查二维数组中是否有元素存在[关闭]。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用二进制搜索检查二维数组中是否有元素存在[关闭]。相关的知识,希望对你有一定的参考价值。

写一个有效的算法,在一个m×n矩阵中搜索一个值。这个矩阵具有以下特性。

每行的整数从左到右排序.每行的第一个整数大于前一行的最后一个整数。点击查看

答案
public boolean searchMatrix(int[][] matrix, int target) 
    if(matrix.length == 0 || matrix[0].length == 0)
        return false;
    int row = binarySearchRow(matrix,0,matrix.length-1,target);
    return binarySearch(matrix,0,matrix[0].length-1,target,row);
   

private static int binarySearchRow(int arr[][], int l, int r, int x)  

        if (r >= l)  
            int mid = l + (r - l) / 2; 

         //check if element is in between first and last element of that row
            if (x >= arr[mid][0] && x <= arr[mid][arr[0].length-1]) 
                return mid; 

         //if not move on to check other halves
            if (arr[mid][0] > x && arr[mid][arr[0].length-1]>x) 
                return binarySearchRow(arr, l, mid - 1, x); 

                 return binarySearchRow(arr, mid + 1, r, x); 
         

    return 0;

  public boolean binarySearch(...,row)..apply normal bs here..

以上是关于使用二进制搜索检查二维数组中是否有元素存在[关闭]。的主要内容,如果未能解决你的问题,请参考以下文章

在javascript中搜索对象中的值[关闭]

检查元素索引是不是在二维数组内(用于在任何方向移动一)

如何检查元素是否在数组中

PHP如何检查一个数组内是不是存在指定元素

LeetCode74. 搜索二维矩阵

PHP如何检查一个数组内是不是存在指定元素