二维数组中的查找
题目
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
样例
输入数组:
[ [1,2,8,9],
[2,4,9,12],
[4,7,10,13],
[6,8,11,15] ]
如果输入查找数值为7,则返回true, 如果输入查找数值为5,则返回false。
解题思路:
对于该矩阵,元素有特殊性质
元素所在行左边的元素都比该元素小,元素所在列下边的元素都比该元素大
因此只需要每次比较,便可删除一行或者一列
如果整个矩阵都扫描完还未找到该元素的话,则返回false
代码
1 class Solution { 2 public: 3 bool searchArray(vector<vector<int>> array, int target) { 4 if(array.size() == 0 || array[0].size() == 0) return false; 5 int n = array.size(); 6 int m = array[0].size()-1; 7 int i = 0, j = m; 8 while(i < n && j >=0) 9 { 10 if(array[i][j] == target) return true; 11 if(array[i][j] > target) j--; 12 if(array[i][j] < target) i++; 13 } 14 return false; 15 } 16 };