0
点赞
收藏
分享

微信扫一扫

Java实现天气预报功能

文章目录

题目描述

在这里插入图片描述
在这里插入图片描述

法一)二分查找

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

//另一种写法
class Solution{
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target){
        int n=matrix[0].size();
        for (const auto& row : matrix){   //const auto& 表示只读取matrix中的元素,不修改
            int l=0, r=n-1;
            while(l<r){
                int mid=(l+r+1) >> 1;
                if(row[mid]<=target) l=mid;
                else r=mid-1;
            }
            if(row[r]==target) return true;
        }
        return false;
    }
};

复杂度

法二)抽象二叉搜索树BST

class Solution{
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target){
        int m=matrix.size(), n=matrix[0].size();
        for (int i=0, j=n-1;i<m & j>=0;){
            if(matrix[i][j]==target) return true;
            else if(matrix[i][j]>target) j--;
            else i++;
        }
        return false;
    }
};

复杂度

法三)直接查找

class Solution{
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target){
        for (const auto& row : matrix){
            for (int col : row){
                if(col == target) return true;
            }
        }
        return false;
    }
};

复杂度

举报

相关推荐

0 条评论