前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >日拱算法:搜索二维矩阵 II

日拱算法:搜索二维矩阵 II

作者头像
掘金安东尼
发布2022-09-19 10:32:29
1320
发布2022-09-19 10:32:29
举报
文章被收录于专栏:掘金安东尼

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情


xixixi,更文无力,转攻算法简单题。中难题畏畏缩缩,简单题我重拳出击~~

image.png
image.png

题:

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:

每行的元素从左到右升序排列。 每列的元素从上到下升序排列。

示例 1:

image.png
image.png
代码语言:javascript
复制
输入: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
searchgrid.jpg
searchgrid.jpg
代码语言:javascript
复制
输入: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 = 20
输出:false

解:

此题要利用到【每行的元素从左到右升序排列。 每列的元素从上到下升序排列】这个关键的题干信息。

咱就是说,只要是查找目标值,有了排序,都会方便许多。

思路:从矩阵的右上角(或左下角)的值开始比较;

比如:从矩阵右上角的值开始找,那就是第一行的最后一个数字;

  1. 如果目标值刚好等于右上角的值,则返回输出;
  2. 如果目标值小于右上角值,则目标值肯定是在同一行的左边去找;
  3. 如果目标值大于右上角的值,则到下一行去找;
代码语言:javascript
复制
var searchMatrix = function(matrix, target) {
    let col = matrix[0].length - 1;//列
        let row = 0;//行

        while (col >= 0 &amp;&amp; row <= matrix.length - 1) {
            if (target == matrix[row][col]) {
                //如果找到就直接返回
                return true;
            } else if (target < matrix[row][col]) {
                //目标值小于右上角值,下一步往左找
                col--;
            } else if (target > matrix[row][col]) {
                //目标值大于右上角值,下一步往下找
                row++;
            }
        }
        return false;
};

那么,相应的,从左下角,找的思路就是反过来的,不做赘述:

代码语言:javascript
复制
var searchMatrix = function(matrix, target) {
    let col = 0, row = matrix.length - 1;
        while(row >= 0 &amp;&amp; col < matrix[0].length){
            if(target > matrix[row][col]){
                col++;
            }else if(target < matrix[row][col]){
                row--;
            }else{
                return true;
            }
        }
        return false;
};
image.png
image.png

OK,以上便是本篇分享。点赞关注评论,为好文助力👍 我是掘金安东尼 🤠 100 万阅读量人气前端技术博主 💥 INFP 写作人格坚持 1000 日更文 ✍ 关注我,陪你一起度过漫长编程岁月 🌏

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题:
  • 解:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档