LeetCode第240題:搜索二維矩陣II(中等)

題目

難度:中等
編寫一個高效的算法來搜索 m x n 矩陣 matrix 中的一個目標值 target。該矩陣具有以下特性:

  • 每行的元素從左到右升序排列。
  • 每列的元素從上到下升序排列。
    在這裏插入圖片描述

題解

題解1:對符合條件的行進行二分查找

class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int xlen = matrix.size();
        if(!xlen || !matrix[0].size()) return false;
        int ylen = matrix[0].size();
        for(int i = 0; i < xlen; i++){
            if(matrix[i][0] <= target && matrix[i][ylen - 1] >= target){
                int l = 0;
                int r = ylen;
                while(l < r){
                    int mid = (l + r) / 2;
                    if(matrix[i][mid] == target) return true;
                    else if(matrix[i][mid] > target) r = mid;
                    else l = mid + 1;
                }
            }
        }
        return false;
    }
};

題解2:從矩陣的右上角開始出發查找

class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        if(!matrix.size() || !matrix[0].size()) return false;
        int i = 0;
        int j = matrix[0].size() - 1;
        while(i < matrix.size() && j >= 0){
            if(matrix[i][j] == target) return true;
            else if(matrix[i][j] < target) i++;
            else j--;
        }
        return false;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章