二维数组中的查找
程序员文章站
2022-03-14 22:58:10
...
1.题目
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数数组和一个整数,判断数组中是否含有该整数。
#思路
首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数组,剔除这个数字所在的列;如果该数字小于要查找的数字,剔除这个数字所在的行。也就是说如果要查找的数字不在数组的右上角,则每一次都在数组的查找范围中剔除一行或者一列,这样每一步都可以缩小查找的范围,直到找到要查找的数字,或者查找范围为空。
举例
如果在一个二维数组中找到数字7,则返回true,如果没有找到,则返回false。
/* 04 二维数组中的查找*/
#include <iostream>
#include <vector>
using namespace std;
class Solution{
public:
bool fun(vector<vector<int>> arr,int target)
{
// 特殊输入
if(!arr.empty())
{
// 行列个数
int row = arr.size();
int col = arr[0].size();
// 右上角坐标
int a = 0;
int b = col-1;
while(a<row && b>=0)
{
// 找到
if(arr[a][b] == target)
return true;
// 未找到
if(arr[a][b] < target)
++a;
else
--b;
}
}
return false;
}
};
int main()
{
Solution solution;
// 特殊输入
vector<vector<int>> arr1;
int target1 = 11;
cout<<solution.fun(arr1,target1)<<endl;
// 正常输入
vector<vector<int>> arr2 = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
int target2 = 11;
cout<<solution.fun(arr2,target2)<<endl;
return 0;
}
上一篇: 防线题解
推荐阅读
-
php中count获取多维数组长度的方法
-
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法_php实例
-
PHP除了数组中的空值
-
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比_php技巧
-
php中判断数组是一维,二维,还是多维的解决方法_php实例
-
二分查找(Binary Search)需要注意的问题,以及在数据库内核中的
-
php使用unset()删除数组中某个单元(键)的方法,unset数组_PHP教程
-
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解_PHP教程
-
php 统计二维数组中某个相等值的总个数,并且组合成一个新的数组
-
C++中指针数组使用过程中的问题