IMWeb提升营Day1 | 训练题1:有序二维数组的查找
来源:互联网 发布:联通网络解锁助手2017 编辑:程序博客网 时间:2024/06/07 01:10
题目描述:
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路一:遍历
/* * 思路一:每一行都进行二分法查找 * 运行时间:0ms * 占用内存:8552k */class Solution {public: bool Find(int target, vector<vector<int> > array) { int top = 0, bottom = array.size(); int mid; for(int i = 0; i < bottom; i++){ int left = 0, right = array[i].size()-1; while(left <= right){ mid = (left+right)/2; if(target > array[i][mid]){ left = mid+1; }else if(target < array[i][mid]){ right = mid-1; }else{ return true; } } } return false; }};
思路二:根据规律从左下角或者右上角开始查找
/* * 思路二:从左下角开始查找 * 运行时间:10ms * 占用内存:8552k */class Solution {public: bool Find(int target, vector<vector<int> > array) { int top = 0, bottom = array.size()-1; int left = 0, right = array[0].size()-1; int xpos = left, ypos = bottom; while((xpos <= right)&& (ypos >= top)){ if(target > array[xpos][ypos]){ //大于就往右走 xpos++; }else if(target < array[xpos][ypos]){ //小于就往上走 ypos--; }else{ return true; } } return false; }};
阅读全文
0 0
- IMWeb提升营Day1 | 训练题1:有序二维数组的查找
- IMWeb提升营Day1 | 训练题6: 旋转数组的最小数字
- IMWeb提升营Day1 | 训练题2:字符串空格替换
- IMWeb提升营Day1 | 训练题4:重建二叉树
- IMWeb提升营Day1
- IMWeb提升营Day1 | 训练题3:从尾到头打印链表
- IMWeb提升营Day1 | 训练题5: 用两个栈实现队列
- IMWeb提升营Day1 | 训练题5: 用两个栈实现队列
- IMWeb提升营Day5 | 训练题28:数组中出现超过一半的数字
- IMWeb提升营Day5 | 训练题30:连续数组的最大和
- IMWeb提升营Day6 | 训练题32:把数组排成最小的数
- IMWeb提升营Day7 | 训练题37:数字在排序数组中出现的次数
- IMWeb提升营Day7 | 训练题40:数组中只出现一次的数字
- IMWeb提升营 —Day1
- IMWeb提升营Day5 | 训练题27:字符串的排列
- 有序二维数组的查找
- 有序二维数组的查找
- IMWeb提升营Day2 | 训练题11:二进制中1的个数
- VS2013设置单元测试运行目录
- Windows10 安装 Android Studio 2.0+
- Gulp针对F1平台的前端资源打包说明
- 面向过程改变成面向对象三步曲
- C#中Delegate委托事件详细介绍
- IMWeb提升营Day1 | 训练题1:有序二维数组的查找
- zabbix3.0 自定义告警邮件内容
- Scrapy爬取百度图片(二)
- 离散题目16 求自反闭包
- Table总结
- pgbouncer配置
- mysql取消大小写区分
- 搜索——codevs1185 幸运数字
- 交换排序