【C++】12行代码 从左下角开始二分搜索

矩阵元素查找

http://www.nowcoder.com/questionTerminal/3afe6fabdb2c46ed98f06cfd9a20f2ce

将每一个元素视作L左下角的数字,由矩阵性质可知L也是从小到大有序的,所以左下角数比上边所有数大,比右边所有数小。当左下角数大于x时,比左下角数更大的右边的数可以全部舍弃,于是左下角上移一格;当左下角数小于x数,比左下角数小的上边的数可以全部舍弃,于是左下角右移。最多可以舍弃n行m列(找到值的时候不舍弃直接返回了),所以时间复杂度最坏是O(n+m)

class Solution {
public:
    vector<int> findElement(vector<vector<int> > &mat, int n, int m, int x) {
        int a = n - 1, b = 0; //左下角坐标
        while(a >= 0 && b < m) { //防止越界
            if(mat[a][b] == x) return vector<int> {a, b};
            else if(mat[a][b] < x) b++; //左下角右移
            else a--; //左下角上移
        }
        return vector<int> {0, 0};
    }
};
全部评论
思路很清晰!
点赞 回复 分享
发布于 2021-04-04 22:25

相关推荐

感觉他们一点都不了解现在这个社会就业有多难,已经在牛客刷到好多篇&nbsp;延毕的帖子了,延毕就会导致已经找好的工作就没了,还得重新再找,学校和老师们是怎么想的呢????看到学生丢失工作会开心吗&nbsp;就业数据都在造假,真实的就业困难不去解决&nbsp;一个个真是好样的
从明天开始狠狠卷JV...:学生看到的是导师不放实习导致offer黄了。 导师看到的是招进来的学生吃自己补助和自己的招生名额,却没给自己升迁带来任何帮助,还要跑路。 根本利益的不一致,最主要留校的导师大概率是职场上招聘失败的,被迫留校的,什么牛鬼蛇神都会有
点赞 评论 收藏
分享
06-18 13:28
已编辑
门头沟学院 Web前端
爱睡觉的冰箱哥:《给予你300的工资》,阴的没边了
点赞 评论 收藏
分享
Rena1ssanc...:对的,要是面评没太烂,勤更新简历等捞就行了,腾讯可以无限复活
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务