[54] 螺旋矩阵 js

题目描述:给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]

* 输出:[1,2,3,6,9,8,7,4,5]

解题思路:

按照顺时针一行一列,往里收缩

解法一:

javascript 复制代码
function spiralOrder(matrix) {
    let left = 0;
    let right = matrix[0].length - 1;
    let top = 0;
    let bottom = matrix.length - 1 ;
    let res = [];


   // 按照顺时针进行输出,规定好收缩边界
    while (left <= right && top <= bottom) {
        // 第一行
        for (let i = left; i <= right; i++) {
            res.push(matrix[top][i]);
        };
        top++;
        // 最后一列
        for (let i = top; i <= bottom; i++) {
            res.push(matrix[i][right]);
        };
        right--;
        // 最后一行

        if (top <= bottom && left <= right) {
            for (let i = right; i >= left; i--) {
                res.push(matrix[bottom][i]);
            }
            bottom--;

            // 第一列
            for (let i = bottom; i >= top; i--) {
                res.push(matrix[i][left]);
            }
            left++;
        }
        
    }
    return res;

    
};

用时:

// Your runtime beats 30.54 % of typescript submissions

// Your memory usage beats 84.1 % of typescript submissions (42.1 MB)

相关推荐
不穿格子的程序员12 分钟前
从零开始学算法——链表篇3:合并两个有序链表 + 两数相加
数据结构·算法·链表·dummy
周杰伦_Jay28 分钟前
【 Vue前端技术详细解析】目录结构与数据传递
前端·javascript·vue.js
暴风鱼划水32 分钟前
算法题(Python)哈希表 | 2.两个数组的交集
python·算法·哈希表
fufu031136 分钟前
Linux环境下的C语言编程(四十二)
linux·c语言·算法
HalvmånEver40 分钟前
Linux : 基础IO(三)
linux·运维·算法
oushaojun242 分钟前
linux中backtrace实战
linux·运维·算法·backtrace
!停1 小时前
深入理解指针(4)
开发语言·javascript·ecmascript
A24207349301 小时前
JavaScript学习
前端·javascript·学习
奋斗吧程序媛1 小时前
动态组件驱动的标签页架构(简单来说:一个页面包含许多Tabs页面,这些Tabs页面渲染逻辑)
前端·javascript·vue.js
Felix_Fly1 小时前
用 Vue3 + naive-cron 开发 Cron 表达式工具:从 0 到 1 实现生成 + 反解析
前端·javascript·vue.js·vue·cron·naive