1、二维数组中的查找
来源:互联网 发布:节目单制作软件 编辑:程序博客网 时间:2024/06/11 15:05
题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
时间限制:1秒 空间限制:32768K
Ⅰ我的笨方法
思路:其实还是双层循环遍历二维数组,每次判断当前行的第一个和最后一个,不在范围内的话判断下一行。
代码:
class Solution {public: bool Find(int target, vector<vector<int> > array) { if(array.empty() || array[0].empty()) return false; int m = array.size(); int n = array[0].size(); if(target < array[0][0] || target > array[m-1][n-1]) return false; for(int i = 0;i < m;i++){ if(array[i][0] > target || array[i][n-1] < target) continue; for(int j = 0;j < n;j++){ if(array[i][j]==target) return true; if(array[i][j] > target) break; } } return false; }};
Ⅱ 巧方法
思路:矩阵是有序的,从左下角来看,向上数字递减,向右数字递增,因此从左下角开始查找,当要查找数字比左下角数字大时,右移。要查找数字比左下角数字小时,上移。
代码:
class Solution {public: bool Find(int target, vector<vector<int> > array) { if(array.empty() || array[0].empty()) return false; int m = array.size(); int n = array[0].size(); if(target < array[0][0] || target > array[m-1][n-1]) return false; int i,j; for(i = m-1,j = 0;i >= 0 && j < n;){ if(array[i][j]==target) return true; if(array[i][j] < target){ j++; continue; } if(array[i][j] > target){ i--; continue; } } return false; }};
0 0
- 【1】二维数组中的查找
- 1、二维数组中的查找
- 二维数组中的查找1
- 数组1:二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- QTCreator2.8.0+Qt Open source 4.8.5环境配置(Win7x64)
- 随机存取存储器(RAM)一般结构和读写过程
- ffmpeg
- 个人常用配置文件解析
- 推荐博文《如何撰写一篇受人欢迎的博客》
- 1、二维数组中的查找
- Android OkHttp相关解析 实践篇
- VS2013 Trouble&&解决
- LeetCode (26)Remove Duplicates from Sorted Array
- 树、森林与二叉树的转换
- 将项目部署到tomcat的三种方式
- 一个不懂业务的DBA不是好的DBA
- Android Studio中怎样打开DDMS
- 自定义View:自定义属性(自定义按钮实现)