zoukankan      html  css  js  c++  java
  • 【LeetCode】74. Search a 2D Matrix

    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所在行,再进行普通的二分查找。

    class Solution {
    public:
        bool searchMatrix(vector<vector<int> > &matrix, int target) {
            if(matrix.empty() || matrix[0].empty())
                return false;
            int m = matrix.size();
            int n = matrix[0].size();
            
            int low = 0;
            int high = m-1;
            while(low <= high)
            {
                int mid = low+(high-low)/2;
                if(matrix[mid][0] == target)
                    return true;
                else if(matrix[mid][0] > target)
                    high = mid-1;
                else
                    low = mid+1;
            }
            low --;
            if(low < 0)
                return false;
            int left = 0;
            int right = n-1;
            while(left <= right)
            {
                int mid = left+(right-left)/2;
                if(matrix[low][mid] == target)
                    return true;
                else if(matrix[low][mid] > target)
                    right = mid-1;
                else
                    left = mid+1;
            }
            
            return false;
        }
    };

  • 相关阅读:
    2017微软秋招A题
    UVA 494 Kindergarten Counting Game
    loss function与cost function
    coderforces 721b
    coderforces719b
    PyQt4打包exe文件
    PyQt4 UI设计和调用 使用eric6
    PyQt4 进度条和日历 代码
    PyQt4 颜色选择,字体选择代码
    PyQt4调用UI文件
  • 原文地址:https://www.cnblogs.com/ganganloveu/p/4073458.html
Copyright © 2011-2022 走看看