螺旋矩阵 js

螺旋矩阵 js思路 1 矩阵遍历是顺时针遍历 2 先遍正序历数组第一个元素数组 再正序遍历数组每个元素数组的最后一个元素 3 再逆序遍历数组最后一个元素数组 4 再从下到上也就是 逆序 遍历每个数组的第一个元素 这个是思路具体执行 1 一个 state 用来做状态存储 上面四个思路对应四个状态 2 上面四个思路 每次遍历完都需要删除相对应元素或者数组 2 使用 while 循环 循环的条件就是数组长度不为空 下面是具体代码 parammatrixi 整型二维数组

思路

1.矩阵遍历是顺时针遍历

2.先遍正序历数组第一个元素数组,再正序遍历数组每个元素数组的最后一个元素

3.再逆序遍历数组最后一个元素数组

4.再从下到上也就是(逆序)遍历每个数组的第一个元素。

这个是思路

具体执行

1. 一个state用来做状态存储,上面四个思路对应四个状态。

2.上面四个思路,每次遍历完都需要删除相对应元素或者数组

2. 使用while 循环,循环的条件就是 数组长度不为空;

下面是具体代码

/  *  * @param matrix int整型二维数组  * @return int整型一维数组  */ function ddelete(matrix){     for (let i = matrix.length - 1; i >= 0; i--) {         if (matrix[i].length == 0) {             matrix.splice(i, 1);         }     } }  function spiralOrder(matrix) {             // write code here             if (matrix.length === 0) return [];             const arry = [];             let state = 1;             //     var l = 0, r = matrix[0].length -1,             //         t = 0, b = matrix.length -1;             while (matrix.length) {                 if (state == 1 && matrix.length) {                     for (let i = 0; i < matrix[0].length; i++) {                         arry.push(matrix[0][i]);                     }                     matrix.shift();                     state = 2;                 }                 if (state == 2 && matrix.length) {                     for (let i = 0; i < matrix.length; i++) {                         arry.push(matrix[i].pop());                     }                     ddelete(matrix);                     state = 3;                 }                 if (state == 3 && matrix.length) {                     const t = matrix[0].length - 1;                     const end = matrix.length - 1;                     for (let i = t; i >= 0; i--) {                         arry.push(matrix[end][i]);                     }                     matrix.pop();                     state = 4;                 }                 if (state == 4 && matrix.length) {                     const end = matrix.length - 1;                     for (let i = end; i >= 0; i--) {                         arry.push(matrix[i].shift());                     }                     ddelete(matrix);                     state = 1;                 }             }             return arry;         } module.exports = {     spiralOrder : spiralOrder };

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229150.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午5:21
下一篇 2026年3月16日 下午5:21


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号