二维数组中的查找
Contact me:
Blog -> https://cugtyt.github.io/blog/index
Email -> cugtyt@qq.com
GitHub -> Cugtyt@GitHub
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
简单解法
bool find(int target, vector<vector<int> > array) {
// 检查边界
if (array.size() <= 0 || array[0].size() <= 0) {
return false;
}
// 遍历
int row = array.size();
int col = array[0].size();
for (int i = 0; i < row; ++i)
{
for (int j = 0; j < col; ++j) {
if (array[i][j] == target)
{
return true;
}
else if (array[i][j] < target)
{
++i;
}
else
{
--j;
}
}
}
return false;
}
利用数组特点,具体见《剑指offer》
bool find(int target, vector<vector<int> > array) {
if (array.size() <= 0 || array[0].size() <= 0) {
return false;
}
int row = array.size();
int col = array[0].size();
// 从右上角开始,比目标小,增加行,比目标大,减小列
for (int i = 0, j = col - 1; i < row && j >= 0;)
{
if (array[i][j] == target)
{
return true;
}
else if (array[i][j] < target)
{
++i;
}
else
{
--j;
}
}
return false;
}