主要思路:
利用矩阵右上角的数字做判断,如果要查找的数大于该数,则去除对该行的判断,如果要查找的数小于该数,则去除对该列的查找
以下代码在vs2015中调试运行通过
#include "stdafx.h"
#include <iostream>
#include<vector>
using namespace std;
class Solution {
public:
bool Find(vector<vector<int>> array, int target)
{
bool found = false;
int rows = 0;
int columns = (array[0].size())-1;
while (rows<array.size() && columns>=0)
{
if (target == array[rows][columns])
{
found = true;
break;
}
else if (target < array[rows][columns])
{
--columns;
}
else
{
++rows;
}
}
return found;
}
};
int main()
{
vector<vector<int>> array = { {1,2,8,9},
{2,4,9,12},
{4,7,10,13},
{6,8,11,15} };
int target = 1;
Solution x;
if (x.Find(array, target))
cout << "true";
else
cout << "false";
while (1);
}