题目描述
已知int一个有序矩阵mat,同时给定矩阵的大小n和m以及需要查找的元素x,且矩阵的行和列都是从小到大有序的。设计查找算法返回所查找元素的二元数组,代表该元素的行号和列号(均从零开始)。保证元素互异。
示例1
输入
[[1,2,3],[4,5,6]],2,3,6
返回值
[1,2]
考察:本质为二分查找,排除不可能的选项,缩小查找范围
class Solution {
public:
vector<int> findElement(vector<vector<int> > mat, int n, int m, int x) {
// write code here
//从右上角开始找,也可以从左下角开始找
vector<int> res;
int i=0,j=m-1;
while(i<n&&j>=0)
{
if(mat[i][j]>x)
j--;
else if(mat[i][j]<x)
i++;
else
{
res.push_back(i);
res.push_back(j);
break;
}
}
return res;
}
};