【剑指offer-Java版】03二维数组中的查找
给定二维数组,和一个整数,二维数组的行从左到右递增,列从上到下递增。
查找该二维数组,看是否有和给定整数相等的值
技巧就是找到一个位于[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二维数组中的查找相关推荐
- 剑指offer刷题 04. 二维数组中的查找
剑指 Offer 04. 二维数组中的查找 1. 问题描述 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个高效的函数,输入这样的一 ...
- JAVA剑指offer编程练习:二维数组中的查找(数组)
1.题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- 在数组中查找指定元素_剑指 offer 第一题: 二维数组中的查找
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- 牛客网-剑指offer 第一题(二维数组中的查找)
//题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数, 输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. /*第一种 将每一行 ...
- 剑指Offer - 面试题4. 二维数组中的查找(双指针)
1. 题目 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 示例 ...
- 剑指offer面试题04. 二维数组中的查找(Array)
题目描述 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路 ...
- 剑指offer 面试题3—二维数组中找数
题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 基本思想: 首先选取数组 ...
- 剑指offer面试题[3]-二维数组的查找
题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 注:对于一个容器存储的 ...
- 算法题001 剑指Offer 面试题三:二维数组中的查找
剑指Offer题目1:二维数组中的查找 题目描述: http://ac.jobdu.com/problem.php?cid=1039&pid=0 在一个二维数组中,每一行都按照从左到右递增的顺 ...
最新文章
- 一键数据分析自动化特征工程!
- ASP绕过防注入的新思路
- Win64 驱动内核编程-24.64位驱动里内嵌汇编
- 【计算机网络】网络层 : IP 数据报格式 ( IP 数据报首部格式 )
- Nutch爬虫解决页面相对路径问题
- python key lambda_使用“key”和lambda表达式的python max函数
- 运行,JUnit! 跑!!!
- 《Pro/ENGINEER野火版5.0从入门到精通》——2.5 设置零件单位
- 自然语言处理系列篇——关键词智能提取
- python平均数 中位数函数_R和python语言如何求平均值,中位数和众数
- 2018蓝桥杯B组:猴子分香蕉(C++/JAVA)
- 使用Koa2重构博客项目
- 浅析Vue源码(二)—— initMixin(上)
- 对C语言指针的学习与理解
- GIS数据处理与应用开发一站式解决方案
- errno ETIMEDOUT npm ERR! network request to https://registry.npmjs.
- 点击图片实现图片居中放大的功能
- Ubuntu 16.04 parted 对 GPT 格式硬盘 (12 TB) 分区
- 学Python真的好找工作吗?工作多年的程序员为你解答
- Prometheus监控
热门文章
- 10.QML Qt Quick Controls 2之imagine style
- 记录一下添加查询场地坐标功能中修改判断条件和画点的大小
- CStopWatch计时器的用法实例
- Spring Boot 2.x整合Websocket(基于Spring Boot 2.x 前后端分离 iview admin vue 集成activiti工作流...
- Hyper-V的版本
- hdu 5212 : Code【莫比乌斯】
- tts和字符集的关系--要求源和目的端的数据库字符集必须一样,国家字符集必须一样。...
- 数据挖掘中分类算法小结
- python 学习之 PythonAdvance2
- 关于最长公共子序列的执行过程