剑指offer面试题3之二维数组中的查找
2016-03-16 21:38
543 查看
问题描述:
在一个二维数组中,每一行都从左到右递增,每一列从上到下都是递增,给定一二维数组和整数值,问该值在该二维数组中吗?
1,考虑问题时需要注意:
我们不能想当然的认为它是一个n方矩阵,即它的列数和行数不一定相同。
2,除了暴力枚举o(n2)。肯定还有其他方法:
在牛客网上编码为:
比如:
vector<vector<int> >vec;
vector<int> v;
vec.push_back(v);
这时候vec的size()为1.而vec[0].size()为0;
在一个二维数组中,每一行都从左到右递增,每一列从上到下都是递增,给定一二维数组和整数值,问该值在该二维数组中吗?
1,考虑问题时需要注意:
我们不能想当然的认为它是一个n方矩阵,即它的列数和行数不一定相同。
2,除了暴力枚举o(n2)。肯定还有其他方法:
在牛客网上编码为:
class Solution { public: bool Find(vector<vector<int> > array,int target) { if (array.empty() || array[0].empty())//这里需要判断列size是否为0 { return false; } int rows = array[0].size(); int columns = array.size(); int row = 0; int column = columns - 1; for (row, column; row <= rows - 1 && column >= 0;) { if (array[row][column] == target) { return true; } else if (array[row][column] < target) { row++; } else column--; } return false; } };至于在判断array.empty()后还要判断array[0].empty(),是因为当array.empty()不成立时,array[0].empty()是有可能成立的。
比如:
vector<vector<int> >vec;
vector<int> v;
vec.push_back(v);
这时候vec的size()为1.而vec[0].size()为0;
相关文章推荐
- 解答Google的一道面试题
- 面试中的一些问题——JAVA(二)
- hadoop面试题总结1
- 态度
- 海量数据处理面试题
- Java面试求职之==与equals()差别
- 金融业IT员工,在总行做软件开发,职业发展道路真的很窄吗?
- 教你如何迅速秒杀99%的海量数据处理面试题【转】
- 今年第一次面试
- 浅谈程序员职业规划
- 剑指offer面试题11之求数值的整数次方
- 记第一次面试20160316
- 2016.3.15作业
- java基础面试题(1)
- 剑指 offer代码解析——面试题29数组中出线次数超过一半的数字
- 剑指 offer代码解析——面试题29数组中出线次数超过一半的数字
- 程序员知识体系必不可少的
- 黑马程序员发声:我们欣赏像柯洁一样的年轻人
- 程序员自己制作.9.png图
- SQL语句存储过程实例详解(面试宝典)