zoukankan      html  css  js  c++  java
  • 【leetcode】 Search a 2D Matrix (easy)

    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.

    实际上就是二分搜索, 不难, 一次AC。

    注意一下退出条件是 l <= r 就行。有等于。

    class Solution {
    public:
        bool searchMatrix(vector<vector<int> > &matrix, int target) {
            if(matrix.empty())
                return false;
    
            int length = matrix.size() * matrix[0].size();
            int l = 0, r = length - 1;
    
            while(l <= r) //注意 这里包含等于
            {
                int mid = (l + r) / 2;
                int col = mid % matrix[0].size();
                int row = mid / matrix[0].size();
                if(matrix[row][col] < target)
                {
                    l = mid + 1;
                }
                else if(matrix[row][col] > target)
                {
                    r = mid - 1;
                }
                else
                {
                    return true;
                }
    
            }
            return false;
        }
    };
  • 相关阅读:
    希尔排序
    代理模式
    快速排序
    插入排序
    各种排序算法的稳定性和复杂度
    简单选择排序
    冒泡排序
    流程图
    PLAY学习【未完】
    项目之maven心得
  • 原文地址:https://www.cnblogs.com/dplearning/p/4128469.html
Copyright © 2011-2022 走看看