题解 | #矩阵元素查找#
矩阵元素查找
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;
}
};
字节跳动公司福利 1309人发布
