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