当前位置:网站首页>LeetCode:剑指 Offer 04. 二维数组中的查找
LeetCode:剑指 Offer 04. 二维数组中的查找
2022-07-06 08:44:00 【Bertil】
在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
示例:
现有矩阵 matrix 如下:
[
[1, 4, 7, 11, 15],
[2, 5, 8, 12, 19],
[3, 6, 9, 16, 22],
[10, 13, 14, 17, 24],
[18, 21, 23, 26, 30]
]
给定 target = 5,返回 true。
给定 target = 20,返回 false。
限制:
0 <= n <= 1000
0 <= m <= 1000
注意:本题与主站 240 题相同:https://leetcode-cn.com/problems/search-a-2d-matrix-ii/
解题思路
1.首先定义出左下角的坐标,
2.然后从左下角元素开始遍历矩阵:若当前元素 > target,则上移一行;若当前元素 < target,则右移一列;若当前元素 = target,则直接返回true即可
3.最后通过上述循环遍历查找后,若未找到等于target的元素则直接返回false即可
代码
/** * @param {number[][]} matrix * @param {number} target * @return {boolean} */
var findNumberIn2DArray = function(matrix, target) {
if(!matrix.length) return false;
// 定义左下角的坐标
let [row, col] = [matrix.length - 1, 0];
const len = matrix[0].length;
// 坐标在矩阵内,就一直查找
while (row >= 0 && col <= len - 1) {
// item 表示当前元素
const item = matrix[row][col];
if (item === target) {
// 找到,返回true
return true;
} else if (item > target) {
// 太大了,上移一行
row--;
} else {
// 太小了,右移一列
col++;
}
}
return false;
};
边栏推荐
- 查看局域网中电脑设备
- [embedded] print log using JLINK RTT
- 深度剖析C语言数据在内存中的存储
- Analysis of the source code of cocos2d-x for mobile game security (mobile game reverse and protection)
- pcd转ply后在meshlab无法打开,提示 Error details: Unespected eof
- The problem and possible causes of the robot's instantaneous return to the origin of the world coordinate during rviz simulation
- Unified ordering background interface product description Chinese garbled
- TP-LINK enterprise router PPTP configuration
- egg. JS directory structure
- ROS编译 调用第三方动态库(xxx.so)
猜你喜欢

JS native implementation shuttle box

Sublime text using ctrl+b to run another program without closing other runs

Synchronized solves problems caused by sharing

Computer cleaning, deleted system files

游戏解包的危害及资源加密的重要性

可变长参数

View computer devices in LAN

企微服务商平台收费接口对接教程

Warning in install. packages : package ‘RGtk2’ is not available for this version of R

704 binary search
随机推荐
Sublime text using ctrl+b to run another program without closing other runs
[cloud native topic -45]:kubesphere cloud Governance - Introduction and overall architecture of enterprise container platform based on kubernetes
704 二分查找
Verrouillage [MySQL]
Revit 二次开发 HOF 方式调用transaction
Leetcode question brushing (5.31) string
JVM 快速入门
Roguelike游戏成破解重灾区,如何破局?
egg. JS project deployment online server
Roguelike game into crack the hardest hit areas, how to break the bureau?
vb.net 随窗口改变,缩放控件大小以及保持相对位置
JS pure function
TP-LINK enterprise router PPTP configuration
View computer devices in LAN
Precise query of tree tree
深度剖析C语言数据在内存中的存储
Problems in loading and saving pytorch trained models
Navicat premium create MySQL create stored procedure
[embedded] print log using JLINK RTT
Generator parameters incoming parameters