在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数字,剔除这个数字所在的列;如果该数字小于要查找的数字,剔除这个数字所在的行。也就是说如果要查找的数字不在数组的右上角,则每一次都在数组的查找范围中剔除一行或者一列,这样每一步都可以缩小查找的范围,直到找到要查找的数字,或者查找范围为空。

 例如,我们要在上述的二维数组中查找数字7的步骤如下图所示:

(矩阵中加阴影背景的区域是下一步查找的范围)

代码如下:

public class Main {public static void main(String[] args) {int[][] array = new int[][]{{1, 3, 5, 7}, {2, 4, 6, 8}, {9, 11, 13, 15}};int target = 15;System.out.println(new Main().Find(target, array));//trueSystem.out.println(new Main().Find(16, new int[][]{{}}));//false}public boolean Find(int target, int[][] array) {if (array == null || array.length ==0 || array[0].length == 0) {return false;}int rows = array.length;//行数int columns = array[0].length;//列数if (target > array[rows - 1][columns - 1] || target < array[0][0]) {return false;}rows = 0;for (int i = columns - 1; i >= 0 && rows < array.length; ) {if (array[rows][i] == target) {return true;} else if (array[rows][i] > target) {i--;} else if (array[rows][i] < target) {rows++;}}return false;}}

二维数组中的查找--元素从左到右递增,从上到下递增相关推荐

  1. php查找二维数组下标,PHP实现二维数组中的查找算法小结

    本文实例讲述了PHP实现二维数组中的查找算法.分享给大家供大家参考,具体如下: 方法1:silu从左下角最后一行的第一个元素开始,遍历.如果小于target 则遍历该行的所有元素,找到结束.如果大于继 ...

  2. 算法题001 剑指Offer 面试题三:二维数组中的查找

    剑指Offer题目1:二维数组中的查找 题目描述: http://ac.jobdu.com/problem.php?cid=1039&pid=0 在一个二维数组中,每一行都按照从左到右递增的顺 ...

  3. LeetCode-剑指 Offer 04. 二维数组中的查找

    剑指 Offer 04. 二维数组中的查找 思路一:暴力解法,两层for循环查找 时间复杂度为:O(nm) 空间复杂度为:O(1) class Solution {public:bool findNu ...

  4. 《剑指Offer》——二维数组中的查找(JZ1)C++

    文章目录 前言 题目:JZ1 二维数组中的查找 一.暴力解法 二.优化解法 总结 前言 题目:JZ1 二维数组中的查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序, ...

  5. 《剑指offer》——04. 二维数组中的查找——暴力法、线性查找——java实现

    文章目录 1.题目描述 2.解决方法 (1)暴力法 (2)线性查找(右上角->左下角) 参考: 1.题目描述 2.解决方法 (1)暴力法 如果不考虑二维数组排好序的特点,则直接遍历整个二维数组的 ...

  6. php二维数组中的查找,PHP实现二维数组中的查找算法小结

    本文实例讲述了PHP实现二维数组中的查找算法.分享给大家供大家参考,具体如下: 方法1:silu从左下角最后一行的第一个元素开始,遍历.如果小于target 则遍历该行的所有元素,找到结束.如果大于继 ...

  7. 剑指offer刷题(java)|二维数组中的查找|替换空格|leetcode刷题

    文章目录 前言 一.二维数组中的查找 题目 题解一 题解二 题解三 二.替换空格 题目 题解一 题解二 题解三 前言 本文主要是写了我做算法题的思路以及对其他优秀题解的自我理解. 一.二维数组中的查找 ...

  8. [剑指offer]面试题3:二维数组中的查找

    面试题3:二维数组中的查找 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...

  9. 剑指offer:二维数组中的查找

    目录 题目 解题思路 具体代码 题目 题目链接 剑指offer:二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺 ...

最新文章

  1. 软件测试可分为哪几种
  2. php mysql 星级评分_jQuery+PHP星级评分实现方法_jquery
  3. Maven学习(六):灵活的构建
  4. Jmeter 压测 http(s)
  5. debian 开发版 移植_迅雷X Linux版(Debian系通用)
  6. wxWidgets:wxStaticText类用法
  7. 搞懂function(*args,**kwargs)
  8. php表单提交完返回,表单内容不清空解决方法
  9. 常用并发工具类(线程池)
  10. javaScript中的回调函数
  11. 接口进阶 java 1614956772
  12. 【webi 专题】能否通过传参数动态生成二维图表?
  13. 语音识别技术基础知识
  14. 计算机管理系统的图片,图片管理软件哪个好用?5款好用的图片管理软件推荐...
  15. OpenGL ES EGL eglMakeCurrent
  16. centos 安装gstreamer_64位CentOS系统中安装32位开发库
  17. 【C51单片机】交通红绿灯设计(仿真)
  18. jsencrypt加解密 Vue测试
  19. 支付系统-财务记账 复式记账 借贷
  20. 51单片机直流电机c语言基础知识要点,完结单片机基础知识的总结(制作作品)...

热门文章

  1. Dmoz对Google的PageRank影响(转)
  2. ubuntu多显卡风扇转速控制
  3. c语言-选手评分系统
  4. filezilla删除服务器文件,FileZilla的设置FTP服务器
  5. Java基础 -> Java死锁如何避免?
  6. python聚合函数_Python 数据聚合 - 树懒学堂
  7. ThreatSource:Google BeyondProd安全架构详解
  8. 电商社区怎么做?看服饰大佬如何通过粉丝圈激活客户
  9. 生而为人,我很抱歉!深夜爬虫, 我很抱歉 ,附微信 “ 网抑云” 公众号爬虫教程!
  10. 信奥一本通-动态规划-例9.2-数字金字塔-方法四-逆推法代码实现