给定二维数组,和一个整数,二维数组的行从左到右递增,列从上到下递增。
查找该二维数组,看是否有和给定整数相等的值

技巧就是找到一个位于[i][j]的值,通过该值判断给定值可能存在于数组的哪一独立部分
满足这个条件的[i][j]有两对,一个是左下角一个是有上角

假设以右上角为例,那么可以把[i][j]所在的行[0 .. i-1]看做是一棵树的左子树,所在列[j+1 … n]看做是右子树,数组的其他部分忽略掉
那么位于[i][j]的元素可以看做是二叉排序树的树根:因为左子树都小于根节点,右子树都大于根节点
查找过程就相当于决定目标结点是在左子树还是在右子树中
但是和一般的二叉查找不同的是,此处的左右子树都是需要根据[i][j]的位置不断变化的,每换一个位置就对应一棵新的二叉树

public class _Q03 {public static void main(String[] args) {int matrix[][] = { {1, 2, 8, 9},{2, 4, 9, 12},{4, 7, 10, 13},{6, 8, 11, 15}};int target = 5;System.out.println(find(matrix, 4, 4, target));}static boolean find(int matrix[][], int row, int col, int target){boolean isFound = false;if((matrix == null) || (row <= 0 ) || (col <= 0)) { return isFound;}int xIndex = 0;int yIndex = col-1;while((xIndex<row) && (yIndex>=0)){if(matrix[xIndex][yIndex] == target){isFound = true;break;}else if(matrix[xIndex][yIndex] > target){yIndex--;}else if(matrix[xIndex][yIndex] < target){xIndex++;}}return isFound;}}

【剑指offer-Java版】03二维数组中的查找相关推荐

  1. 剑指offer刷题 04. 二维数组中的查找

    剑指 Offer 04. 二维数组中的查找 1. 问题描述 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个高效的函数,输入这样的一 ...

  2. JAVA剑指offer编程练习:二维数组中的查找(数组)

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

  3. 在数组中查找指定元素_剑指 offer 第一题: 二维数组中的查找

    题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...

  4. 牛客网-剑指offer 第一题(二维数组中的查找)

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

  5. 剑指Offer - 面试题4. 二维数组中的查找(双指针)

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

  6. 剑指offer面试题04. 二维数组中的查找(Array)

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

  7. 剑指offer 面试题3—二维数组中找数

    题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 基本思想: 首先选取数组 ...

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

    题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 注:对于一个容器存储的 ...

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

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

最新文章

  1. 一键数据分析自动化特征工程!
  2. ASP绕过防注入的新思路
  3. Win64 驱动内核编程-24.64位驱动里内嵌汇编
  4. 【计算机网络】网络层 : IP 数据报格式 ( IP 数据报首部格式 )
  5. Nutch爬虫解决页面相对路径问题
  6. python key lambda_使用“key”和lambda表达式的python max函数
  7. 运行,JUnit! 跑!!!
  8. 《Pro/ENGINEER野火版5.0从入门到精通》——2.5 设置零件单位
  9. 自然语言处理系列篇——关键词智能提取
  10. python平均数 中位数函数_R和python语言如何求平均值,中位数和众数
  11. 2018蓝桥杯B组:猴子分香蕉(C++/JAVA)
  12. 使用Koa2重构博客项目
  13. 浅析Vue源码(二)—— initMixin(上)
  14. 对C语言指针的学习与理解
  15. GIS数据处理与应用开发一站式解决方案
  16. errno ETIMEDOUT npm ERR! network request to https://registry.npmjs.
  17. 点击图片实现图片居中放大的功能
  18. Ubuntu 16.04 parted 对 GPT 格式硬盘 (12 TB) 分区
  19. 学Python真的好找工作吗?工作多年的程序员为你解答
  20. Prometheus监控

热门文章

  1. 10.QML Qt Quick Controls 2之imagine style
  2. 记录一下添加查询场地坐标功能中修改判断条件和画点的大小
  3. CStopWatch计时器的用法实例
  4. Spring Boot 2.x整合Websocket(基于Spring Boot 2.x 前后端分离 iview admin vue 集成activiti工作流...
  5. Hyper-V的版本
  6. hdu 5212 : Code【莫比乌斯】
  7. tts和字符集的关系--要求源和目的端的数据库字符集必须一样,国家字符集必须一样。...
  8. 数据挖掘中分类算法小结
  9. python 学习之 PythonAdvance2
  10. 关于最长公共子序列的执行过程