剑指offer:二维数组中的查找
来源:互联网 发布:网络产品包装的作用 编辑:程序博客网 时间:2024/06/06 00:13
参考:http://www.07net01.com/2015/07/874135.html
描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解法
这是一道考查二维数组的理解和编程能力的题。
在二维数组在内存中是连续存储的。在内存中从上到下存储各行元素,在同一行中按照从左到右存储。
因此可以按照行号和列号来计算出相对数组首部的位置。
由于每一行 和 每一列都是有序的,因此,我们可以拿要查找的数与数组的右上角的数进行比较。
因为每一行从左到右递增,每一列从上到下递增。
所以查找一个数num,可以这样做:
首先拿num与右上角的数进行比较。
若相等,则直接返回,找到该数。
若num < 右上角数,则剔除右上角数所在列 col–
若num > 右上角数,则剔除右上角数所在行 row++
有了这个思路,我们就可以进行写代码了。
其实,还可以选择与左下角的数进行比较。方法与上述跟右上角数比较一样。
code
class Solution {public: bool Find(vector<vector<int> > array,int target) { bool found = false; int row = array.size(); int col = array[0].size(); if(!array.empty() && row > 0 && col > 0){ int crow = 0, ccol = col - 1; while(crow < row && ccol >= 0){ if(array[crow][ccol] == target){ return true; } else if(array[crow][ccol] > target) --ccol; else ++crow; } } return false; }};
0 0
- 剑指offer-->二维数组中的查找
- 剑指offer之二维数组中的查找
- 剑指offer:3-二维数组中的查找
- [剑指Offer]二维数组中的查找
- 【剑指offer】二维数组中的查找
- [剑指Offer]二维数组中的查找
- 剑指Offer:二维数组中的查找
- 【剑指offer】二维数组中的查找
- 剑指offer 1384 二维数组中的查找
- 剑指Offer之二维数组中的查找
- 剑指offer 03:二维数组中的查找
- 剑指offer(2) - 二维数组中的查找
- 剑指offer-二维数组中的查找
- 剑指offer-3 二维数组中的查找
- 剑指Offer之 - 二维数组中的查找
- 剑指offer 3 -二维数组中的查找
- 剑指offer之二维数组中的查找
- [剑指Offer]5.二维数组中的查找
- 位操作基础篇之位操作全面总结
- black hat python
- python_基础02
- 根据传入的两个参数,做分隔更新数据库中的值。
- linux find grep组合使用
- 剑指offer:二维数组中的查找
- 无法解析的外部符号__imp__AlphaBlend@44
- 几种进程间的通信方式
- JPA实现的CRUD
- 推送机制
- 递归复习,递归输出字符串的全排列
- 我是菜鸟:concurrentHashMap实现原理
- 【笔试】41、二叉搜索树的后序遍历列
- Button 样式及selector选择器