矩阵元素查找

题目描述

有一个NxM的整数矩阵,矩阵的行和列都是从小到大有序的。请设计一个高效的查找算法,查找矩阵中元素x的位置。

给定一个int有序矩阵mat,同时给定矩阵的大小nm以及需要查找的元素x,请返回一个二元数组,代表该元素的行号和列号(均从零开始)。保证元素互异。

测试样例:
[[1,2,3],[4,5,6]],2,3,6
返回:[1,2]
class Finder {
public:
    vector<int> findElement(vector<vector<int>> mat, int n, int m, int x) {
           vector<int> res;
        
        int row_index = 0;
        int col_index = m-1;
        
        while(row_index < n && col_index >= 0){
            if(mat[row_index][col_index] == x){
                res.push_back(row_index);
                res.push_back(col_index);
                return res;
            }
            else if(mat[row_index][col_index] > x){
                --col_index;
            }
            else
                ++row_index;
        }
        
        return res;
        
    }
};

 



posted on 2017-04-21 10:53  123_123  阅读(229)  评论(0编辑  收藏  举报