【剑指offer系列】 二维数组中的查找___3
2016-04-06 14:26
281 查看
题目描述:
在一个二维数组中,每一行的元素都是从左到右递增的,每一列的元素都是从上到下递增的。
请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
示例:
输入数组为:
若待查找数字为9,则返回true
若待查找数字为5,则返回false
代码:
分析:
从数组的右上角开始查找,若目标比该数大,则一定在该数下方,若目标比该数小,则一定在该数左边。一直重复该操作,直到找到目标元素为止
如要查找的元素是10:
1)初始时,row=0,col=3,nums[0][3]=9<10,则row++
2)row=1,col=3,nums[1][3]=12>10,则col–
3)row=1,col=2,nums[1][2]=9<10,则row++
4)row=2,col=2,nums[2][2]=10,返回true
在一个二维数组中,每一行的元素都是从左到右递增的,每一列的元素都是从上到下递增的。
请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
示例:
输入数组为:
若待查找数字为9,则返回true
若待查找数字为5,则返回false
代码:
bool find(vector<vector<int> >& nums,int target){ int m=nums.size(); if(m==0) return false; int n=nums[0].size(); int row=0,col=n-1; while(row<m&&col>=0){ if(nums[row][col]==target){ return true; } else if(nums[row][col]>target){ //比目标大时,向左查找 --col; } else{ //比目标小时,向右查找 ++row; } } return false; }
分析:
从数组的右上角开始查找,若目标比该数大,则一定在该数下方,若目标比该数小,则一定在该数左边。一直重复该操作,直到找到目标元素为止
如要查找的元素是10:
1)初始时,row=0,col=3,nums[0][3]=9<10,则row++
2)row=1,col=3,nums[1][3]=12>10,则col–
3)row=1,col=2,nums[1][2]=9<10,则row++
4)row=2,col=2,nums[2][2]=10,返回true
相关文章推荐
- JS闭包
- js触发点击事件
- js中prototype用法
- js字符转ascii,转unicode
- Yahoo前端优化十四条军规
- mfc窗口置于最前端
- 通过Feature部署Sharepoint 2013的EventReceiver
- 常用js代码片段
- JQuery_$(document).ready() 与 $(window).load()方法比较
- jQuery/Ajax/PHP/Json 的一个综合例子
- IIS7.0设置 url重写成html(伪静态)
- 基于HTML模板和JSON数据的JavaScript交互(移动端)
- jQuery的ajaxStart方法和ajaxStop方法
- Json转换时报错/Json解析方法
- Leetcode 19. Remove Nth Node From End of List(python)
- 让Visual Studio 也支持JS代码折叠 [ Visual Studio | #region | #endregion ]
- SharedPreferences.OnSharedPreferenceChangeListener什么时候调用
- 基于谷歌官方DrawerLayout实现QQ样式边侧滑抽屉缩进缩出技术
- 剑指offer: 38 数字在排序数组中出现的次数
- React和Redux的连接react-redux