题解 | #矩阵元素查找#

矩阵元素查找

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;
    }
};
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务