剑指Offer(书):二维数组中的查找
2024-08-30 15:47:33
题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
分析:关键点:每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。从关键点我们需要思考其规则:右边的大于左边的,下面的大于上面的。入手点:四个角;左上角:右面下面都是递增,即查找点在右面下面都有可能,不可行;右上角:向下递增,向左递减,也就是说,待查找点比此角的值大,向下走,比此点的值小,向左走,可行,舍弃左上角的点。左下角与此类似。右下角与左上角类似。所以,从右上角或左下角入手。
public class Solution04 {
boolean find(int[][] matrix, int number) {
if (matrix == null || matrix.length <= 0 || matrix[0].length <= 0) {
return false;
}
int row = matrix.length - 1;
int col = 0;
while (row >= 0 && col < matrix[0].length) {
if(matrix[row][col]==number){
return true;
}
if(matrix[row][col]<number){
col++;
}else{
row--;
}
}
return false;
} public static void main(String[] args) {
Solution04 solution03 = new Solution04();
System.out.print(solution03.find(new int[][]{{3, 2, 1},{ 6, 4, 5}}, 7));
}
}
最新文章
- redis的数据类型和指令
- 删除表空间时,遇到了ORA-14404错误
- Android端通过HttpURLConnection上传文件到服务器
- 【大话QT之十】实现FTP断点续传(需要设置ftp服务器为“PASV”被动接收方式)
- thickbox 关于动态生成 无法跳出弹出框的问题
- Anisotropic gauss filter
- DeNA/上海纵游通过使用AWS大量缩短新款游戏和服务的上线时间
- gulp简单使用小记
- mvc图片地址
- 面试的妹纸问我:web缓存设置不是后台的事情吗?
- C# 7 局部函数剖析
- turtle文库 ——python
- SDKmanager的位置
- Go语言学习之11 日志收集系统kafka库实战
- struts2实现文件上传和下载
- udp_client函数
- javascript闭包—围观大神如何解释闭包
- java数据结构之hashMap
- suoi31 最近公共祖先2 (倍增lca)
- nodejs基础 -- 路由
热门文章
- win32 寄存器
- ASP.NET MVC Identity 兩個多個連接字符串問題解決一例
- asp.net 中文部分显示问号
- VC++编译出错:LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- linux php扩展安装gettext
- 使用Jenkins进行android项目的自动构建(6)
- 合并百度影音的离线数据 with python 2.3 格式更新
- Java 游戏报错 看不懂求教
- Docker 启动时报错:iptables:No chain/target/match by the name
- JS concat() 方法