0%

二维数组中的查找

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

若数组中存在数k,则其所在行左侧的数小于等于k,右侧的数大于等于k,其所在列上方的数小于等于k,下方的数大于等于k。故若存在k,自数组的左下角开始查找,若当前数小于k,则k在右侧,否则在上方。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
const int w = array.begin()->size();
const int h = array.size();
int x = w - 1, y = 0;
while (x >= 0 && y <= h - 1)
{
if (array[y][x] > target)
{
x--;
}
else if (array[y][x] == target)
{
return true;
}
else
{
y++;
}
}
return false;
}
};