题目:

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

array: 待查找的二维数组target:查找的数字。查找到返回true,查找不到返回false。

思路:   1 2 8 9

2 4 9 12

4 7 10 13

6 8 11 15

例如上面的二维数组,因为数组是部分有序的,所以很快会想到用二分或者二叉查找树,如果以9为根节点看的话,整个二维矩阵就是一棵二叉查找树。利用这个思想就可以降低时间复杂度。比如要找的数是7,则从9开始,9>7所以把9所在的列去掉,列指针左移,8>7同样的操作,2<7把2所在行去掉,行指针下移,4<7同样的操作,7==7返回true。这个思路明白了,边界情况稍加考虑代码很容易些出来。当然以6开始也满足二叉查找树的情况,但是左上角和右下角就不满足了。

实现代码:

public class Solution {

public boolean Find(int [][] matrix,int t) {

if(matrix == null || matrix.length == 0 || matrix[0].length == 0)

return false;

int row = 0;

int col = matrix[0].length - 1; //从右上角开始

while(row < matrix.length && col >= 0) {

if(matrix[row][col] == t)

return true;

else if(matrix[row][col] > t) {

col --;

}

else {

row ++;

}

}

return false;

}

}

https://www.cnblogs.com/wxisme/category/672272.html

二维数组的查找 java_二维数组中的查找相关推荐

  1. vector 查找_同样是Excel中的查找函数,这个函数却比VLOOKUP功能强100倍

    VLOOKUP函数即使很强大,但是也有局限性,有些查找无法实现.今天,跟大家分享一个万能查找函数:LOOKUP. VLOOKUP函数可以实现的查找LOOKUP也可以,VLOOKUP函数不能实现的查找L ...

  2. mysql怎么查找删除重复数据_Mysql中如何查找并删除重复数据

    考试系统中做了一个用户导入试题功能,导致用户导入了很多重复的试题,我需要查询及删除一下重复的记录,于是有了这篇文章. (一)单个字段 1.查找表中多余的重复记录,根据(question_title)字 ...

  3. 整数数组查找java_使用Java编写程序以查找整数数组中的第一个非重复数字?

    查找数组中的第一个非重复数字-构造count数组以将给定数组中每个元素的计数存储为相同长度,且所有元素的初始值为0. 将数组中的每个元素与除自身之外的所有其他元素进行比较. 如果匹配发生,则增加其在计 ...

  4. 剑指offer:面试题04. 二维数组中的查找

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

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

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

  6. 数组-二维数组中的查找

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

  7. 面试题3-二维数组中的查找

    '''0 先从二维表的右上角着手,如果目标小于等于右上角,则进入该列,从右向左继续深一步查找: 1 如果刚好等于当前数,返回True,如果不满足,到2 2 如果当前数不满足1,则如果目标大于当前数,则 ...

  8. [剑指Offer]5.二维数组中的查找

    题目 在一个二维数组中,每一行都依照从左到右递增的顺序排序,每一列都依照从上到下递增的顺序排序.请完毕一个函数,输入这种一个二维数组和一个整数.推断数组中是否含有该整数. 思路 [算法系列之三十三]杨 ...

  9. 【剑指offer-Java版】03二维数组中的查找

    给定二维数组,和一个整数,二维数组的行从左到右递增,列从上到下递增. 查找该二维数组,看是否有和给定整数相等的值 技巧就是找到一个位于[i][j]的值,通过该值判断给定值可能存在于数组的哪一独立部分 ...

最新文章

  1. 程序员花名大 PK | 每日趣闻
  2. 解决:此错误(HTTP 500 内部服务器错误)意味着您正在访问的网站出现了服务器问题,此问题阻止了该网页的显示...
  3. html显示mysql图片路径_MySQL MySQL 直接存储图片并在 html 页面中展示,点击下载 _好机友...
  4. StringUtils.isAlphanumeric(String)方法检查中文是通过的,需要注意。它不能用来检测字符串是否只包含英文和数字。
  5. 使用tensorflow实现机器学习中的线性拟合
  6. 麻省理工学院《算法导论》(MIT - Introduction to Algorithms)
  7. Linux设置node的process.env.NODE_ENV
  8. P3052 [USACO12MAR]【摩天大楼里的奶牛(Cows in a Skyscraper)】
  9. Atitit 循环处理的新特性 for...else...
  10. arm-linux-gcc交叉编译器和gcc编译器的下载地址
  11. java基础代码详解
  12. 基于FPGA的可控倒计时计数器
  13. stm32学习之定时器中断时间设置与计算
  14. 安装 3dsMax 2020 错误 1625 系统策略禁止这个安装
  15. 东方博宜OJ——1007 - 【入门】统计大写英文字母的个数
  16. Mybatis日志源码探究
  17. Orthanc的REST API — Orthanc Book文档
  18. 路由器和交换的本质区别解析
  19. 中兴核心网服务器笔记本电脑,基于统一硬件平台的中兴通讯核心网技术介绍
  20. 【观察】亚信科技:中期业绩逆势上扬,让5G新价值挺进纵深

热门文章

  1. 简化工作流程,10款必备的HTML5开发工具
  2. 外部类的静态成员不允许直接使用非静态内部类
  3. 挖掘机实现“无人驾驶”!协作机器人“魔法之手”取代人工操作
  4. 人工智能AI和机器学习ML对量化交易领域的影响
  5. python中值滤波去除反光_Python 实现中值滤波、均值滤波的方法
  6. java网格式布局登录界面_Java学习笔记------自己书写的登录界面实例
  7. java socket wex5_WeX5集成ActiveMQ+WebSocket实现消息推送
  8. pythonset操作教程_Python集合(set)方式和使用方法
  9. synchronized锁升级
  10. 025_JavaScript数组方法