题解 | #矩阵元素查找#
矩阵元素查找
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; } };