剑指offer(1)-二维数组中的查找
来源:互联网 发布:淘宝账号忘了怎么找回 编辑:程序博客网 时间:2024/06/10 20:45
二维数组中的查找
题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
输入描述
array: 待查找的二维数组
target:查找的数字
输出描述
查找到返回true,查找不到返回false
案例
例如下面的二维数组就是每行、每列都递增排序。如果在这个数组中查找数字7,则返回true,如果查找数字5,由于数组不含有该数字,则返回false。
解决思路
当我们需要解决一个复杂的问题时,一个很有效的办法就是从一个具体的问题入手,通过分析简单具体的例子,试图寻找普遍的规律。针对这个问题,我们不妨从一个具体的例子入手。下面我们以在题目中给出的数组中查找数字7为例来一步步分析查找的过程。
首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数字,剔除该数字所在的列;如果该数字小于要查找的数字,剔除该数字的行。也就是说如果查找的数字不在数字的右上角,则每一次都在数组的查找范围中剔除一行或者一列,这样每一步都可以缩小查找的范围,知道找到要查找的数字,或者查找范围为空。
代码
c++
class Solution {public: bool Find(vector<vector<int> > array,int target) { bool isFind = false; if (array.size() <= 0) { return isFind; } int row = (int)array.size(); // 获取二维数组的行 int column = (int)array[0].size(); // 获取二维数字的列 // 定义起始搜索点 int rowIndex = 0; int columnIndex = column - 1; while (rowIndex <= row -1 && columnIndex <= column -1 && columnIndex >= 0 && rowIndex >= 0) { if (array[rowIndex][columnIndex] < target) { rowIndex++; }else if (array[rowIndex][columnIndex] > target){ columnIndex--; }else{ // 找到了 isFind = true; return isFind; } } return isFind; }};
0 0
- 剑指offer 1 二维数组中的查找
- 剑指offer[1]二维数组中的查找
- 剑指offer(1):二维数组中的查找
- 剑指offer(二维数组中的查找)
- 二维数组中的查找(剑指offer)
- 剑指offer(1)-二维数组中的查找
- 剑指Offer——(1)二维数组中的查找
- 【剑指offer-解题系列(1)】二维数组中的查找
- 剑指offer--(1) 二维数组中的查找
- 剑指offer-二维数组中的查找(1)
- 剑指offer:二维数组中的查找(数组)
- 剑指offer-->二维数组中的查找
- 剑指offer之二维数组中的查找
- 剑指offer:3-二维数组中的查找
- [剑指Offer]二维数组中的查找
- 【剑指offer】二维数组中的查找
- [剑指Offer]二维数组中的查找
- 剑指Offer:二维数组中的查找
- Ant 风格路径表达式
- 解决android系统唤醒时间偏长------healthd里的epoll以及socket
- Android设备中实现陀螺仪(Orientation Sensor)
- (selenium 六)unittest通过测试套件组织用例 (2)
- java web taglib自定义标签的练习
- 剑指offer(1)-二维数组中的查找
- Dashgo D1软件支持
- 我有几个粽子,和一个故事
- uiscrollview滚动时候nstimer会失灵
- Linux下用户组、文件权限详解
- iOS开发系列之运动事件
- ionic ng-src 在网页显示,但是导出apk在android手机中运行不显示图片
- 【Android新手笔记四】activity之间的数据共享
- spring aop aspect + annotation实现缓存命中判断