二维数组中的查找--元素从左到右递增,从上到下递增
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数字,剔除这个数字所在的列;如果该数字小于要查找的数字,剔除这个数字所在的行。也就是说如果要查找的数字不在数组的右上角,则每一次都在数组的查找范围中剔除一行或者一列,这样每一步都可以缩小查找的范围,直到找到要查找的数字,或者查找范围为空。
例如,我们要在上述的二维数组中查找数字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;}}
二维数组中的查找--元素从左到右递增,从上到下递增相关推荐
- php查找二维数组下标,PHP实现二维数组中的查找算法小结
本文实例讲述了PHP实现二维数组中的查找算法.分享给大家供大家参考,具体如下: 方法1:silu从左下角最后一行的第一个元素开始,遍历.如果小于target 则遍历该行的所有元素,找到结束.如果大于继 ...
- 算法题001 剑指Offer 面试题三:二维数组中的查找
剑指Offer题目1:二维数组中的查找 题目描述: http://ac.jobdu.com/problem.php?cid=1039&pid=0 在一个二维数组中,每一行都按照从左到右递增的顺 ...
- LeetCode-剑指 Offer 04. 二维数组中的查找
剑指 Offer 04. 二维数组中的查找 思路一:暴力解法,两层for循环查找 时间复杂度为:O(nm) 空间复杂度为:O(1) class Solution {public:bool findNu ...
- 《剑指Offer》——二维数组中的查找(JZ1)C++
文章目录 前言 题目:JZ1 二维数组中的查找 一.暴力解法 二.优化解法 总结 前言 题目:JZ1 二维数组中的查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序, ...
- 《剑指offer》——04. 二维数组中的查找——暴力法、线性查找——java实现
文章目录 1.题目描述 2.解决方法 (1)暴力法 (2)线性查找(右上角->左下角) 参考: 1.题目描述 2.解决方法 (1)暴力法 如果不考虑二维数组排好序的特点,则直接遍历整个二维数组的 ...
- php二维数组中的查找,PHP实现二维数组中的查找算法小结
本文实例讲述了PHP实现二维数组中的查找算法.分享给大家供大家参考,具体如下: 方法1:silu从左下角最后一行的第一个元素开始,遍历.如果小于target 则遍历该行的所有元素,找到结束.如果大于继 ...
- 剑指offer刷题(java)|二维数组中的查找|替换空格|leetcode刷题
文章目录 前言 一.二维数组中的查找 题目 题解一 题解二 题解三 二.替换空格 题目 题解一 题解二 题解三 前言 本文主要是写了我做算法题的思路以及对其他优秀题解的自我理解. 一.二维数组中的查找 ...
- [剑指offer]面试题3:二维数组中的查找
面试题3:二维数组中的查找 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...
- 剑指offer:二维数组中的查找
目录 题目 解题思路 具体代码 题目 题目链接 剑指offer:二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺 ...
最新文章
- 软件测试可分为哪几种
- php mysql 星级评分_jQuery+PHP星级评分实现方法_jquery
- Maven学习(六):灵活的构建
- Jmeter 压测 http(s)
- debian 开发版 移植_迅雷X Linux版(Debian系通用)
- wxWidgets:wxStaticText类用法
- 搞懂function(*args,**kwargs)
- php表单提交完返回,表单内容不清空解决方法
- 常用并发工具类(线程池)
- javaScript中的回调函数
- 接口进阶 java 1614956772
- 【webi 专题】能否通过传参数动态生成二维图表?
- 语音识别技术基础知识
- 计算机管理系统的图片,图片管理软件哪个好用?5款好用的图片管理软件推荐...
- OpenGL ES EGL eglMakeCurrent
- centos 安装gstreamer_64位CentOS系统中安装32位开发库
- 【C51单片机】交通红绿灯设计(仿真)
- jsencrypt加解密 Vue测试
- 支付系统-财务记账 复式记账 借贷
- 51单片机直流电机c语言基础知识要点,完结单片机基础知识的总结(制作作品)...
热门文章
- Dmoz对Google的PageRank影响(转)
- ubuntu多显卡风扇转速控制
- c语言-选手评分系统
- filezilla删除服务器文件,FileZilla的设置FTP服务器
- Java基础 -> Java死锁如何避免?
- python聚合函数_Python 数据聚合 - 树懒学堂
- ThreatSource:Google BeyondProd安全架构详解
- 电商社区怎么做?看服饰大佬如何通过粉丝圈激活客户
- 生而为人,我很抱歉!深夜爬虫, 我很抱歉 ,附微信 “ 网抑云” 公众号爬虫教程!
- 信奥一本通-动态规划-例9.2-数字金字塔-方法四-逆推法代码实现