zoukankan      html  css  js  c++  java
  • Leetcode 74.搜索二维矩阵

    搜索二维矩阵

    编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:

    • 每行中的整数从左到右按升序排列。
    • 每行的第一个整数大于前一行的最后一个整数。

    示例 1:

    输入:

    matrix = [

    [1, 3, 5, 7],

    [10, 11, 16, 20],

    [23, 30, 34, 50]

    ]

    target = 3

    输出: true

    两次二分搜索

     1 class Solution{
     2 public:
     3     bool searchMatrix(vector<vector<int>> &matrix, int target){
     4         if (matrix.empty() || matrix[0].empty()) return false;
     5         if (target<matrix[0][0] || target>matrix.back().back()) return false;
     6         int left = 0, right = matrix.size() - 1;
     7         while (left <= right){
     8             int mid = (left + right) / 2;
     9             if (matrix[mid][0] == target) return true;
    10             else if (matrix[mid][0]<target) left = mid + 1;
    11             else right = mid - 1;
    12         }
    13         int tmp = right;
    14         left = 0;
    15         right = matrix[tmp].size() - 1;
    16         while (left <= right){
    17             int mid = (left + right) / 2;
    18             if (matrix[tmp][mid] == target) return true;
    19             else if (matrix[tmp][mid]<target) left = mid + 1;
    20             else right = mid - 1;
    21         }
    22         return false;
    23     }
    24 };
  • 相关阅读:
    Solved:Spring Junit Test NoSuchMethodError
    Stack实现
    CLRS10.2-8练习
    CLRS10.2-7练习
    CLRS10.2-4练习
    CLRS10.1-7练习
    CLRS10.1-6练习
    算法:吸血鬼数字算法
    CLRS最大子数组问题
    VS快捷键
  • 原文地址:https://www.cnblogs.com/kexinxin/p/10163048.html
Copyright © 2011-2022 走看看