剑指Offer——面试题3:二维数组中的查找(Java)
来源:互联网 发布:windows 组播协议 编辑:程序博客网 时间:2024/06/15 00:35
分析:这个题目比较简单,容易的想到的方法是逐行用二分查找。但仔细一想能发现,这样做会有很多重复比较的数据,因此算法可以优化。具体优化解析见书本P38
常规方法:
public boolean isElement(int[][] arr, int data) { int low = 0, high = 0 , mid = 0; for(int i=0; i<arr.length; i++ ){ low = 0; high = arr[i].length - 1; while(low <= high) { mid = low + (high - low) / 2; if(arr[i][mid] == data) { return true; } else if(arr[i][mid] > data) { high = mid - 1; } else { low =mid + 1; } } } return false; }
优化方法:
public boolean isElement(int[][] arr, int data) { int i = 0 , j = arr[0].length -1; while (i<=arr.length-1 && j>=0) { while (j >= 0 && arr[i][j] > data) j--; if (j < 0) return false; while (i <= arr.length - 1 && arr[i][j] < data) i++; if (i > arr.length - 1) return false; if (arr[i][j] == data) return true; } return false ; }
阅读全文
0 0
- 剑指offer面试题3—二维数组中的查找
- 剑指Offer:面试题3——二维数组中的查找(java实现)
- 剑指Offer——面试题3:二维数组中的查找(Java)
- 剑指offer面试题3—二维数组中的查找(Java实现)
- 二维数组中的查找(剑指offer面试题3)
- 剑指offer面试题3 二维数组中的查找 (java)
- 剑指Offer面试题3(Java版):二维数组中的查找
- 剑指Offer面试题3(Java版):二维数组中的查找
- 剑指offer|面试题3:二维数组中的查找(Java实现)
- 【剑指offer】2.3.1 数组——面试题3:二维数组中的查找
- 【剑指offer】面试题3:二维数组中的查找
- 【剑指offer】面试题3:二维数组中的查找
- 剑指Offer:面试题3 二维数组中的查找
- 《剑指Offer》面试题3:二维数组中的查找
- 剑指offer面试题3-二维数组中的查找
- 【剑指Offer学习】【面试题3 :二维数组中的查找】
- 【剑指offer】 面试题3: 二维数组中的查找
- 剑指Offer面试题3:二维数组中的查找
- threejs 中的Box的索引位置简介
- 导航和路径规划
- PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
- BZOJ 4571 [Scoi2016] 美味
- linux服务器自动切割并清理日志
- 剑指Offer——面试题3:二维数组中的查找(Java)
- Linux系统增加交换空间的方法
- 发送手机短信获取验证码功能
- 利用OpenCV自带的traincascade程序训练分类器
- caffe 学习之ParamSpec
- Java 代码性能优化
- Kotlin第一学
- 课堂笔记-用python爬虫文档
- 通用mapper