题解 | #二维数组中的查找#
二维数组中的查找
https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e
#include <iostream> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param target int整型 * @param array int整型vector<vector<>> * @return bool布尔型 */ bool Find(int target, vector<vector<int>>& array) { // write code here if(array[0].size() == 0 || array.size() == 0){ return false; } int m = array[0].size(); int n = array.size(); int j = m-1; int i = 0; while (i>=0 && i<n && j>=0 && j<m) { if(array[i][j] < target) { i++; } else if (array[i][j] > target) { j--; } else{ return true; } } return false; } };
观察可知,从矩阵右上角的元素开始,矩阵的下方元素总是大于左方元素。从这里开始搜索,实现搜索过程中的不重不漏。
时间复杂度O(n+m).