Search a 2D Matrix

    xiaoxiao2021-03-25  173

    Description:

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:

    Integers in each row are sorted from left to right. The first integer of each row is greater than the last integer of the previous row.

    问题描述:

    给定矩阵,从左到右,从上到下,元素逐渐增大。

    解法一:

    思路:

    基本二分法思路,考点在于把矩阵元素铺开成数组之间的转换关系(按列铺开)

    Code:

    public class Solution { public boolean searchMatrix(int[][] matrix, int target) { if(matrix == null || matrix.length == 0){ return false; } int start = 0, rows = matrix.length, cols = matrix[0].length; int end = rows * cols -1; while(start <= end){ int mid = start + (end - start)/ 2; if(matrix[mid / cols][mid % cols] == target){ return true; } if(matrix[mid / cols][mid % cols] < target){ start = mid + 1; } else{ end = mid - 1; } } return false; } }
    转载请注明原文地址: https://ju.6miu.com/read-6635.html

    最新回复(0)