LeetCode:剑指 Offer 29. 顺时针打印矩阵
发布日期:2022-09-10 02:21:51
浏览次数:7
分类:技术文章
本文共 1625 字,大约阅读时间需要 5 分钟。
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]
示例 2:
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]
限制:
- 0 <= matrix.length <= 100
- 0 <= matrix[i].length <= 100
解题思路
1.首先对数组进行判空,然后定义left、right、top、bottom四个变量的值以及result结果数组,接着进行顺时针方向遍历
2.从左到右遍历,以 left 开始,right 结束,该行遍历完,向下移动一行,如果上边边界大于下边边界了,遍历完成,跳出。 3.从上到下遍历,以 top 开始,bottom结束,该列遍历完,向左移动一列,如果右边边界小于左边边界了,遍历完成,跳出 4.从右到左遍历,以 right 开始,left 结束,该行遍历完,向上移动一行,如果下边边界小于上边边界了,遍历完成,跳出 5.从下到上遍历,以 bottom 开始,top 结束,该列遍历完,向右移动一列,如果左边边界大于右边边界了,遍历完成,跳出代码
/** * @param {number[][]} matrix * @return {number[]} */var spiralOrder = function(matrix) { if(!matrix.length || !matrix[0].length) return []; let left = 0, right = matrix[0].length - 1, top = 0, bottom = matrix.length - 1, result = []; while(true) { // 从左到右,以 left 开始,right 结束 for(let i = left; i <= right; i++) result.push(matrix[top][i]); if(++top > bottom) break; // 该行遍历完,向下移动一行,如果上边边界大于下边边界了,遍历完成,跳出 // 从上到下遍历,以 top 开始,bottom结束 for(let j = top; j <= bottom; j++) result.push(matrix[j][right]); if(--right < left) break; // 该列遍历完,向左移动一行,如果右边边界小于左边边界了,遍历完成,跳出 // 从右到左遍历,以 right 开始,left 结束 for(let i = right; i >= left; i--) result.push(matrix[bottom][i]); if(--bottom < top) break; // 该行遍历完,向上移动一行,如果下边边界小于上边边界了,遍历完成,跳出 // 从下到上遍历,以 bottom 开始,top 结束 for(let j = bottom; j >= top; j--) result.push(matrix[j][left]); if(++left > right) break; // 该列遍历完,向右移动一行,如果左边边界大于右边边界了,遍历完成,跳出 } return result;};
转载地址:https://blog.csdn.net/Bertil/article/details/124585873 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年03月29日 08时52分15秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Lua(十五)——协同程序
2019-04-27
Lua(十六)——文件
2019-04-27
Lua(十七)——面向对象
2019-04-27
Lua(十八)——错误处理,垃圾回收
2019-04-27
xLua(一)——介绍
2019-04-27
xLua(二)——下载
2019-04-27
xLua(三)——在C#中访问Lua代码
2019-04-27
xLua(四)——C#访问Lua的基本类型
2019-04-27
xLua(五)——C#访问Lua的table
2019-04-27
xLua(六)——C#访问Lua的function
2019-04-27
基础知识——常用单位介绍
2019-04-27
xLua(七)——Lua访问C#(一)
2019-04-27
xLua(八)——Lua访问C#(二)
2019-04-27
Unity中实现解析Json文件
2019-04-27
Unity自带Json解析库——JsonUtility
2019-04-27
Unity中使用ViedoPlayer操作视频文件
2019-04-27
C#中的的输入与输出
2019-04-27
C#中@符号的作用
2019-04-27
C#中$符号的作用
2019-04-27
Mac装windows系统后如何更换触控板设置
2019-04-27