二维数组中的查找
来源:互联网 发布:淘宝店铺如何加权重 编辑:程序博客网 时间:2024/05/21 16:22
题意:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题思路:以数组右上角的数为参考,
若target等于右上角数,则查找成功;
若target小于右上角数,则右上角数所在列不在查找范围;
若target大于右上角数,则右上角数所在行不在查询范围;
若查找范围为空,则说明target不存在。
以数组左下角的数为参考亦可。
但不能选取左上角或右下角,因target与数组中的min,max比较并不能缩小查找范围。
而若选取数组中任意数,则会让查找范围变得复杂。
//以数组右上角的数为参考
class Solution {public: bool Find(int target, vector<vector<int> > array) { if (array.empty()) return false; const int row = array.size(), column = array[0].size(); int i = 0, j = column - 1; while (i <= row - 1 && j >= 0) { if (array[i][j] == target) return true; else if (target < array[i][j]) --j; else ++i; } return false; }};
//以数组左下角的数为参考
class Solution {public: bool Find(int target, vector<vector<int> > array) { if (array.empty()) return false; const int row = array.size(), column = array[0].size(); int i = row - 1, j = 0; while (i >= 0 && j <= column - 1) { if (array[i][j] == target) return true; else if (target > array[i][j]) ++j; else --i; } return false; }};
0 0
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- iOS获取时间戳
- spring中加入log4jdbc-remix
- 1622-5 孔富晨 总结《2016年12月5日》 【连续第66天总结】
- Android Design Support Library(三)用CoordinatorLayout实现Toolbar隐藏和折叠
- javaSE jdbc的连接 详记
- 二维数组中的查找
- 149. Max Points on a Line
- Linux命令的返回值
- linux 网络命令 以及网络基础知识
- Spark on Yarn解析
- weighted Independent set on trees
- mySQL数据库Sql语句执行效率检查--Explain命令
- 算法-选择排序
- c语言中实现文件间的复制