剑指Offer -- 二维数组中的查找
来源:互联网 发布:2017年淘宝运营计划表 编辑:程序博客网 时间:2024/06/10 05:08
二维数组中的查找
题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组array和一个整数target,判断数组中是否含有该整数。
- 思路一
根据二维数组自上而下、从左到右递增的规律,选取右上角或左下角作为与target比较的起点。
以右上角元素array[row][col]
为例:
当target<array[row][col]
,说明target必定在array[row][col]
的左边,则col--
;
当target>array[row][col]
,说明target必定在array[row][col]
的下面,则row++
;
当target==array[row][col]
,返回;
public class Solution { public boolean Find(int target, int [][] array) { int row = 0, col = array[0].length-1; while(row<array.length && col >=0){ if(array[row][col] > target){ col--; }else if(array[row][col] < target){ row++; }else{ return true; } } return false; }}
- 思路二
- 遍历二维数组的每一行,判断target是否可能在数组的这一行中出现,通过二分法查找
import java.util.Arrays;public class Solution { public boolean Find(int target, int [][] array) { for(int i=0; i<array.length; i++){ if(array[i].length == 0 || target<array[i][0])break; if(target<=array[i][array[i].length-1]){ int location = Arrays.binarySearch(array[i], target); if(location >= 0)return true; } } 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.二维数组中的查找
- 关于摄像头
- I2C协议小结
- TridTree
- 深入理解 Android 卷I
- TortoiseGit学习笔记(一)
- 剑指Offer -- 二维数组中的查找
- 理解长短期记忆网络(LSTM NetWorks)
- PHP7.0新增加的特性
- 常用参考基类写法之Fragment
- 我与CSDN
- 获取文件相关消息
- Flask:Nginx + uWSGI + Supervisor 服务器部署
- Swift
- SpringBoot系列—基础配置