剑指offer之二维数组中的查找(Java实现)
2018-11-17 22:51
211 查看
版权声明:转载请联系 :leizhang9527@163.com https://blog.csdn.net/weixin_40928253/article/details/84194084
2. 二维数组中的查找
题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
Consider the following matrix: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ] Given target = 5, return true. Given target = 20, return false.
解题思路
从右上角开始查找。矩阵中的一个数,它左边的数都比它小,下边的数都比它大。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间。
复杂度:O(M + N) + O(1)
public boolean Find(int target, int[][] matrix) { if (matrix == null || matrix.length == 0 || matrix[0].length == 0) return false; int rows = matrix.length, cols = matrix[0].length; int r = 0, c = cols - 1; // 从右上角开始 while (r <= rows - 1 && c >= 0) { if (target == matrix[r][c]) return true; else if (target > matrix[r][c]) r++; else c--; } return false; }阅读更多
相关文章推荐
- 剑指Offer面试题3:二维数组的查找 Java实现
- 剑指offer面试题3 二维数组的查找(java实现)
- 剑指offer题目3-二维数组中的查找(JAVA实现)
- 剑指offer刷题之java实现的二维数组中的查找
- 剑指offer-二维数组中的查找 java实现
- 剑指offer之第一题 二维数组中查找 Java实现
- 剑指Offer:面试题3——二维数组中的查找(java实现)
- 剑指offer--二维数组中的查找 java实现
- 【剑指offer——JAVA实现】二维数组中的查找
- 剑指offer--面试题3:二维数组的查找--Java实现
- 剑指offer面试题3—二维数组中的查找(Java实现)
- 剑指offer|面试题3:二维数组中的查找(Java实现)
- 剑指offer编程题Java实现——面试题3二维数组中的查找
- 【剑指offer-Java版】03二维数组中的查找
- 剑指offer面试题3 二维数组中的查找 (java)
- 【剑指Offer】二维数组中的查找 解题报告(Java & Python)
- 剑指offer面试题3 二维数组中的查找 (java)
- 剑指offer[一]:二维数组中的查找(java和c++版本)
- 剑指Offer 3题 二维数组中的查找 Java
- 剑指offer-chapter2-面试题3-二维数组的查找(java)