在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
这个问题有一个很巧妙的方法就是不要从左下角或者右上角开始,而是要从左上角或者右下角开始。这是因为当他从左上角或者右下角开始的话,大于的话选择一个方向,小于的话,选择另一个方向,相当于剪枝。
1 #include<iostream>
2 using namespace std;
3 class Solution {
4 public:
5 bool Find(int target, vector<vector<int> > array) {
6 if (array.size() == 0)
7 {
8 return false;
9 }
10 int y = array[0].size() - 1;
11 int x = 0;
12 while (y >= 0 && x < array.size())
13 {
14 if (target == array[x][y])
15 {
16 return true;
17 } else if (target > array[x][y]) {
18 x++;
19 } else if (target < array[x][y]) {
20 y--;
21 }
22 }
23 return false;
24 }
25 };
来源:https://www.cnblogs.com/adamhome/p/7933859.html