剑指offer--<二维数组查找>
来源:互联网 发布:acrobat reader mac 编辑:程序博客网 时间:2024/05/01 20:22
转载请声明源地址
听说,剑指offer那都是大牛干的活【偷笑】,我也凑个热闹,
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
有三个想法:
1.1 for循环遍历
1.2 for循环遍历优化版
2. 腾讯曾经的笔试题目(那个100层扔鸡蛋,扔玻璃球,扔......)【下篇博客再写】。
看到题目的时候,以前做过一维数组查找,一个for循环查找,二维数组要查找的话,一样,直接使用两个for循环,时间复杂度是o(n^2),说干就干。
存在的问题:
数组是自增数组,如何查找才时间复杂度才是最低的 ,这是优化的方向,想法2也是基于这个目的。
1.1 for循环遍历
中心指导思想:遇到相同的文件就退出所有循环,将外循环加上标签,退出循环时,直接退出标签循环。
public static boolean Find1(int target, int [][] array) { int lenOfarray=array.length; int lenOfRow=array[0].length; Boolean flag=true; outside:for (int i=0;i<lenOfarray;i++){for (int j=0;j<lenOfRow;j++){if (array[i][j]==target){flag=false;break outside;}}}return !flag; }
附:牛客截图
1.2 for循环遍历
中心指导思想:遇到相同的文件就退出所有循环,将判断元素相同的条件加入到 循环判定条件中 ,这样一旦flag变化,判断条件也同样变化。
public static boolean Find2(int target, int [][] array) { int lenOfarray=array.length; int lenOfRow=array[0].length; Boolean flag=true;for (int i=0;flag && i<lenOfarray;i++){for (int j=0;flag && j<lenOfRow;j++){if (array[i][j]==target){flag=false;}}}return !flag; }
附:牛客截图源代码:GitHub: https://github.com/johnlee2018/JZoffer.git
1 0
- 剑指offer-二维数组查找
- 剑指Offer--二维数组查找
- 剑指offer 二维数组查找
- [剑指Offer]二维数组查找
- 剑指offer--<二维数组查找>
- 剑指offer-->二维数组中的查找
- 剑指offer之二维数组中的查找
- 剑指offer:3-二维数组中的查找
- [剑指Offer]二维数组中的查找
- 【剑指offer】二维数组中查找_03
- 【剑指offer】二维数组中的查找
- 【剑指offer】二分查找二维数组
- [剑指Offer]二维数组中的查找
- 剑指Offer:二维数组中的查找
- 【剑指offer】二维数组中的查找
- 剑指offer 1384 二维数组中的查找
- 剑指Offer之二维数组中的查找
- 剑指offer 03:二维数组中的查找
- python用requests请求,报SSL:CERTIFICATE_VERIFY_FAILED错误。
- UVa442
- Cannot load JDBC driver class 'com.mysql.jdbc.Driver ' —— 一个坑爹的BUG
- MySQL的文件目录说明
- Map的4种遍历方式
- 剑指offer--<二维数组查找>
- HashMap的实现原理和底层数据结构
- 使用springMVC+mybatis生成Dao层的xxDao
- LoadRunner测试结果分析,举三个例子先!
- 深入解析 web socket
- Android中常见的设计模式
- ubuntu环境下JDK8的 安装与配置
- AngularJS下$http服务Post方法传递json参数
- 214. Shortest Palindrome