二维数组中的查找的两种解法及C++实现
发布日期:2021-10-02 06:27:32
浏览次数:1
分类:技术文章
本文共 998 字,大约阅读时间需要 3 分钟。
二维数组中的查找的两种解法及C++实现
题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
请完成一个函数,输入这样的一个二维数组,判断数组中是否含有该整数。
例如下面二维数组每行递增、每列都递增。如果从这个数组中查找数字7
,则返回true
;如果查找数字5
,则返回false
1 2 8 92 4 9 124 7 10 136 8 11 15
解法1:暴力法
从数组中挨个扫描,如果找到返回true
,否则返回false
(只是为了对比,不建议)
class Solution { public: bool Find(int target, vector> array) { int i,j; for(i=0;i
代码运行结果:
解法2:排除法
对于这样的一个数组,我们可以拿右上方向对角线上的元素考虑:
- 如果该数字等于要查找的数字,则查找完成
- 如果该数字大于要查找的数字,则去掉这一列(因为这一列的数据依次递增),缩小查找范围
- 如果该数字小于要查找的数字,则去掉这一行(因为这一行的数据从右到左依次递减)
即每次要查找的数字不在右上角,则都可以去掉一行或者一列,从而缩小查找范围
牛客网提交代码如下:
class Solution { public: bool Find(int target,vector> array){ int r=0,c=array[0].size()-1; while(r =0){ if(array[r][c]==target){ return true; }else if(array[r][c]>target){ c--; }else{ r++; } } return false; }};
代码运行结果:
《剑指Offer》面试题4
转载地址:https://blog.csdn.net/Jeaten/article/details/107891633 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月16日 21时27分37秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
操作型数据库(OLTP) VS 分析型数据库(OLAP)
2019-05-08
推荐系统 - 基于用户的协同过滤推荐 - 入门
2019-05-08
推荐系统 - 基于物品的协同过滤推荐 - 入门
2019-05-08
推荐系统 - 基于物品本身的特征来(分类)推荐- 步骤与进阶的knn
2019-05-08
推荐系统 - 基于物品本身的特征来(分类)推荐- 专有名词解释
2019-05-08
数据挖掘,机器学习,人工智能区别
2019-05-08
2013-7-18_SSH的开发_JSP调用ACTION的值一些错误
2019-05-08
Struts.xml中加不加type="redirect"
2019-05-08
js表格时间排序例子
2019-05-08
JSP初学的一些记录
2019-05-08
js初学笔记
2019-05-08
行存储(关系型数据库)与列存储(hbase,es聚合的doc_value)
2019-05-08
lucene的安装与小测试
2019-05-08
SSH调用lucene的错误
2019-05-08
Java static静态变量只有一个,被类拥有
2019-05-08
腾讯股票接口、和讯网股票接口、新浪股票接口、雪球股票数据、网易股票数据
2019-05-08
getopt和getopt_long函数
2019-05-08
libevent源码浅析: http库
2019-05-08
高并发的epoll+多线程
2019-05-08
epoll源码分析(一)
2019-05-08