二维数组中的查找

题目

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。

请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

样例

输入数组:

[ [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 };

 

posted @ 2019-07-16 03:02  roov  阅读(1)  评论(0编辑  收藏  举报