
剑指 Offer 04. 二维数组中的查找
如果当前元素等于目标值,说明我们找到了目标值,应该立即返回true。 如果当前元素小于目标值,那么说明目标值可能存在于当前位置的左侧。由于数组按行递增,我们继续向左移动列指针。 如果当前元素大于目标值,说明目标值可能存在于当前位置的下方。由于数组按列递减,我们继续向下移动行指针。 如果遍历完整个数组都没有找到目标值,则返回false。
发布日期:2021-05-12 21:18:17
浏览次数:12
分类:精选文章
本文共 694 字,大约阅读时间需要 2 分钟。
由于这个二维数组的结构是按行递增、按列递减排列的,我们可以从右上角开始搜索目标值。具体来说,右上角是数组的黄金位置,因为它几乎同时包含了行和列的高值特征。
我们可以通过以下步骤进行搜索:
这种方法有助于我们快速缩小搜索范围,只关注可能存在目标值的区域,从而提高搜索效率。
/** * @param {number[][]} matrix * @param {number} target * @return {boolean} */var findNumberIn2DArray = function (matrix, target) { if (!matrix.length) return false; let i = 0, j = matrix[0].length - 1; while (i < matrix.length && j >= 0) { if (matrix[i][j] === target) return true; else if (matrix[i][j] < target) i++; else j--; } return false;};
发表评论
最新留言
不错!
[***.144.177.141]2025年04月29日 01时02分54秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
android 集成weex
2019-03-09
【echarts】中国地图china.js 在线引用地址
2019-03-09
Flex 布局的自适应子项内容过长导致其被撑大问题
2019-03-09
PL/SQL 动态Sql拼接where条件
2019-03-09
Lua-table 一种更少访问的安全取值方式
2019-03-09
虚函数
2019-03-09
菱形继承
2019-03-09
RTL设计- 多时钟域按顺序复位释放
2019-03-09
斐波那契数列两种算法的时间复杂度
2019-03-09
int main(int argc,char* argv[])详解
2019-03-09
【Android踩过的坑】7.Android Studio 点击启动项目时进入调试模式
2019-03-09
【Android小技巧】1.快速查看SDK对应的API Level
2019-03-09
【自学Flutter】4.1 Material Design字体图标的使用(icon)
2019-03-09
C++清空队列(queue)方法
2019-03-09
【换行符】什么时候用cin.get()吃掉输入流中的换行符
2019-03-09
【二叉树】已知后序与中序求先序
2019-03-09
数组范围的动态扩容
2019-03-09
如何选择三种验证类型的https证书
2019-03-09