题解 | #矩阵元素查找#

矩阵元素查找

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

矩阵里面的元素是有序且无重复的:
首先看四个角,左上与右下必定为最小值与最大值,而左下与右上就有规律了:
右上元素大于它左方的元素,小于它下方的元素,左下元素相似。
我们可以在查找时使用二分法:
首先以右上角为起点,若是它小于目标元素,则往下移动去找大的,若是他大于目标元素,则往左移动去找小的。

class Solution {
public:
    vector<int> findElement(vector<vector<int> > mat, int n, int m, int x) {
        // write code here
        int r = 0, c = m - 1;
        vector<int> indx(2,0);
        while (r < n && c >= 0) {
            if (mat[r][c] == x) {
                indx[0] = r;
                indx[1] = c;
                break;
            }
            else if (mat[r][c] > x) {
                c--;
            }
            else {
                r++;
            }
        }
        return indx;
    }
};
全部评论

相关推荐

09-01 11:31
门头沟学院 Java
buul:七牛云的吧,感觉想法是好的,但是大家没那么多时间弄他这个啊。。。不知道的还以为他是顶尖大厂呢还搞比赛抢hc,只能说应试者的痛苦考察方是无法理解的,他们只会想一出是一出
点赞 评论 收藏
分享
10-23 21:54
中南大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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