矩阵元素查找
题目描述
有一个NxM的整数矩阵,矩阵的行和列都是从小到大有序的。请设计一个高效的查找算法,查找矩阵中元素x的位置。
给定一个int有序矩阵mat,同时给定矩阵的大小n和m以及需要查找的元素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; } };