zoukankan      html  css  js  c++  java
  • Leetcode 074 Search a 2D Matrix

    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.

    For example,

    Consider the following matrix:

    [
      [1,   3,  5,  7],
      [10, 11, 16, 20],
      [23, 30, 34, 50]
    ]
    

    Given target = 3, return true.

    思路:先利用每一行的最后一个数与target判断,确定target可能在的行数;再在确定的那一行进行折半查找。

    public class S074 {
        public boolean searchMatrix(int[][] matrix, int target) {
            int i  = 0;
            for (;i<matrix.length;i++) {
                if (matrix[i][matrix[0].length-1]>=target) {
                    break;
                }
            }
            if (i == matrix.length)
                return false;
            int l = 0, r = matrix[0].length-1;
            //折半查找
            while (l <= r) {
                if (target == matrix[i][(l+r)/2])
                    return true;
                else if (target > matrix[i][(l+r)/2])
                    l = (l+r)/2+1;
                else 
                    r = (l+r)/2-1;
            }
            return false;
        }
    }
  • 相关阅读:
    easy-batch job processors
    easy-batch job marshallers
    easy-batch job mappers
    easy-batch job filters
    easy-batch job writers
    easy-batch job readers
    easy-batch job 报告
    easy-batch job 调度
    easy-batch job 监控
    easy-batch job 配置
  • 原文地址:https://www.cnblogs.com/fisherinbox/p/5430339.html
Copyright © 2011-2022 走看看