开发者社区> 答案命运> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

剑指Offer——顺时针打印矩阵(JS实现)

简介: 剑指Offer——顺时针打印矩阵(JS实现)
+关注继续查看

题目描述

image.png

解题思路(路径循环法)

  • 所谓的路径循环,就是路径本身存在一种循环,就是每一次顺时针是一次循环,每循环完一条边,就要修改想对应的边界条件,直到循环遍历完所有的节点。
  • 所谓一图胜千言,有时候很多描述不如一张图片来的清晰易懂。
  • 具体的思路来源于下面的这个题解

image.png

解题代码

var spiralOrder = function(matrix) {
    // !解题核心:本题存在一个路径上的循环:
    // 循环(左 ——> 右,上 ——> 下,右 ——> 左,下 ——> 上)
    // 如果是空数组
    if (matrix.length === 0) return [];
    // 定义四个指针
    let top = 0;
    let bottom = matrix.length - 1;
    let left = 0;
    let right = matrix[0].length - 1;
    // 定义存储最终结果的数组
    let res = [];
    // 最外边的循环是控制 顺时针圈数的循环
    while (1) {
        // 左 ——> 右
        for (let i = left; i <= right; i++) {
            res.push(matrix[top][i]);
        }
        top++;
        if (top > bottom) break;
        // 上 ——> 下
        for (let i = top; i <= bottom; i++) {
            res.push(matrix[i][right]);
        }
        right--;
        if (right < left) break;
        // 右 ——> 左
        for (let i = right; i >= left; i--) {
            res.push(matrix[bottom][i]);
        }
        bottom--;
        if (bottom < top) break;
        // 下 ——> 上
        for (let i = bottom; i >= top; i--) {
            res.push(matrix[i][left]);
        }
        left++;
        if (left > right) break;
    }
    return res
};

总结(本题给我们的启示思路)

  • 启示一:学会给循环增加边界条件
  • 启示二:学会读懂题目中的隐藏循环条件

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
javascript实现省市区三级联动选择的代码(数据为模拟json数据)
javascript实现省市区三级联动选择的代码(数据为模拟json数据):
12 0
JavaScript实现四则运算
JavaScript实现四则运算
6 0
JavaScript实现复选框全选与全不选的效果
JavaScript实现复选框全选与全不选的效果
9 0
JavaScript实现鼠标放上去之后高亮显示且隔行换色
JavaScript实现鼠标放上去之后高亮显示且隔行换色
14 0
JavaScript的正则表达式实现邮箱校验
JavaScript的正则表达式实现邮箱校验
7 0
JavaScript实现搜索框效果
JavaScript实现搜索框效果
9 0
JavaScript实现九九乘法表
JavaScript实现九九乘法表
10 0
使用JavaScript 实现最简单最基本的轮播图样式
学习使用JavaScript 实现最简单最基本的轮播图样式。
26 0
jQuery/javascript实现网页注册的表单验证
1 2 3 4 注册表单验证 5 6 7 table{background-color:pink;width:80%;height:300px;} 8 td{text-align:center;} 9 10 11 $("document").
776 0
+关注
答案命运
人有多自律,就有多自由!
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Python第五讲——关于爬虫如何做js逆向的思路
立即下载
编程语言如何演化—— 以 JS 的 private 为例
立即下载
JS零基础入门教程(上册)
立即下载