剑指offer——二维数组的查找
来源:互联网 发布:网络本科可以继续考研 编辑:程序博客网 时间:2024/05/29 19:15
题目描述(书中第三题)
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
public class Solution { public boolean Find(int target, int [][] array) { if (array == null || array.length == 0 || (array.length == 1 && array[0].length == 0)) return false; int a = array.length; int b = array[0].length; for(int i = 0; i<a; i++){ if(target>=array[i][0]){ //只要target不小于某行数组的第一个值,即开始进入for循环查找 for(int j = 0; j<b; j++){ if(target==array[i][j]) return true; } } } return false; }}
自己的思路有两个注意的地方:
1. 二维数组行数和列数的计算
2. 二维数组为空的判断。null和空数组是不一样的。有一个测试用例“16,[[]]”,有行,但列数为0
其实这种思路,相当于直接遍历了,代码还没有直接遍历来的简单。。。但复杂度和直接遍历基本一样
====
利用数组的特点,从左下角或者右上角开始查找,可以快速缩小范围
public class Solution { public boolean Find(int [][] array,int target) { int m = array.length - 1; int i = 0; while(m >= 0 && i < array[0].length){ if(array[m][i] > target) m--; else if(array[m][i] < target) i++; else return true; } return false; }}
阅读全文
0 0
- 剑指offer—二维数组的查找
- 剑指offer—二维数组的查找
- 剑指offer——二维数组查找
- 剑指Offer——二维数组查找
- 剑指offer——二维数组的查找
- 剑指offer——二维数组的查找
- 剑指offer——二维数组的查找
- 剑指offer刷题—二维数组的查找
- 剑指offer(1)—二维数组的查找
- 《剑指offer》数组——二维数组中查找
- 剑指offer - 二维数组的查找
- 二维数组的查找(剑指offer)
- 剑指offer--二维数组的查找
- 《剑指offer》之二维数组的查找
- 剑指offer--二维数组的查找
- 【剑指offer】二维数组的查找
- 【剑指offer】二维数组的查找
- 剑指offer系列----二维数组的查找
- 脉冲云镜像仓库使用手册
- python010 -- 异常处理
- MongoDB常用操作符
- js雨滴掉落效果,图片+js+css3完成
- together项目进度报告7
- 剑指offer——二维数组的查找
- 启动另一个App/apk中的Activity(A应用打开B应用)
- 2017春季实习生面试经历+找实习攻略
- Android DataBinding 入门笔记
- mave环境搭建
- 微擎二开笔记之一:framework\class\account.class.php
- SharePoint 发送邮件之 Windows 2012 配置SMTP服务器及测试代码
- vlc 前瞻
- c++操作输入法