首页 > 试题广场 >

顺时针打印矩阵

[编程题]顺时针打印矩阵
  • 热度指数:984335 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵:
[[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,15,16]]
则依次打印出数字
[1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10]
数据范围:
0 <= matrix.length <= 100
0 <= matrix[i].length <= 100

示例1

输入

[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]

输出

[1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10]
示例2

输入

[[1,2,3,1],[4,5,6,1],[4,5,6,1]]

输出

[1,2,3,1,1,1,6,5,4,4,5,6]
头像 牛客题解官
发表于 2020-05-29 15:26:23
精华题解 题目主要信息: 题目给定一个n∗mn*mn∗m的矩阵,需要将其按照顺时针螺旋输出 举一反三: 学习完本题的思路你可以解决类似的矩阵遍历的问题。 方法:边界模拟法(推荐使用) 思路: 这道题就是一个简单的模拟,我们想象有一个矩阵,从第一个元素开始,往右到底后再往下到底后再往左到底后再往上,结束这一 展开全文
头像 不是江小白
发表于 2021-07-08 21:01:14
精华题解 1. 常规解题思路 此题一画出示例矩阵,就可以找到常规解题思路:找到四个角的边界,然后模拟路径遍历矩阵。 2. 核心代码: # -*- coding:utf-8 -*- class Solution: # matrix类型为二维列表,需要返回列表 def printMatrix(s 展开全文
头像 Maokt
发表于 2021-06-28 09:43:08
精华题解 算法思想一:按层模拟遍历 解题思路: 可以将矩阵看成若干层,首先打印最外层的元素,其次打印次外层的元素,直到打印最内层的元素。 对于每层,从左上方开始以顺时针的顺序遍历所有元素。假设当前层的左上角位于 (top,left),右下角位于(bottom,right),按照如下顺序遍历当 展开全文
头像 开车的阿Q
发表于 2021-07-18 22:01:03
精华题解 描述 这是一篇面对初级coder的题解。 知识点:矩阵 难度:二星 题解 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: [[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,1 展开全文
头像 大菠萝侦探
发表于 2021-07-01 15:33:20
精华题解 描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 算法 我们的目标是按照图中的数字大小顺序访问每个位置的值,然后按顺序保存每个点。 方法一 我们定义一个从 (0, 0) 出发的点,当遇到边界或者访问过的点之后就向右转,已经访问过的点就把它的值赋为一个不可能的值 inf。如下图,我 展开全文
头像 枫叶零渡
发表于 2021-07-02 17:43:43
精华题解 描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵:[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]则依次打印出数字[1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10] 解法 展开全文
头像 叫我皮卡丘
发表于 2019-08-13 11:04:56
【剑指offer】顺时针打印矩阵 --Java实现 题解 1. 分析 刷 LeetCode 看到的大神题解,感觉容易理解且好写简单来说,就是不断地收缩矩阵的边界定义四个变量代表范围,up、down、left、right 向右走存入整行的值,当存入后,该行再也不会被遍历,代表上边界的 up 加一, 展开全文
头像 Jackson_888
发表于 2019-12-10 12:28:06
这道题可以使用一种超简单且易理解的方法(包注释不超过20行):1.吸收第一行,并将第一行从矩阵中去掉,2.将矩阵“变相转置”(这里的转置可以理解为将矩阵从地上立起来,比如矩阵是【【1,2,3】, 【4,5,6】】 将它“变相转置”(立起来)为 【【3,6】,【2,5】,【1,4】】 )3.重复以上 展开全文
头像 中工升达预备毕业生
发表于 2019-10-05 21:51:23
很扎心,看了一会讨论和题解,没看到一个用标记数组写的... 随便画图可知,走的方向dir有规律:向右->向下->向左->向上->向右->向下->向左->... 是一个圆圈 判断哪一步是否可以走,首先,它没越界;其次,它没被走过(vis标记数组,为false 展开全文
头像 一叶浮尘
发表于 2019-08-14 21:27:50
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 看到这道题目刚开始觉得简 展开全文
头像 mars.Xyr
发表于 2020-04-10 22:01:29
python大法:每次只取第一行数据,然后再把矩阵逆时针旋转90度 class Solution: # matrix类型为二维列表,需要返回列表 def printMatrix(self, matrix): # write code h 展开全文
头像 JokerC
发表于 2020-05-24 17:51:23
整个的循环过程可以分解成多个小过程来解决。可以拿一个9*10的矩阵来举例子:rowSize=9; colSize=10;具体可以分解为多少个环(过程)呢,取决于rowSize 和 colSize 的大小关系:Pos = rowSize > colSize ? (colSize - 1) / 展开全文
头像 Janebook2019
发表于 2019-08-14 17:10:59
Java 解题定义几个int变量,存储最小行、最大行、最小列、最大列行号、已存入List中的整数的个数(感觉会节约时间,比每次计算List的size);完成一行的循环,行号进行一次变化(最上方的行循环,对应最小行号加1;最下方的行循环,最大行号减去1);列循环同理。 import java.util 展开全文
头像 郭家兴0624
发表于 2019-08-10 17:31:02
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路1:顺时针打印就是 展开全文
头像 南宫雨雪
发表于 2020-02-01 21:08:12
问题分析:这道题我想的是第一步从左到右、第二步从上到下、第三步从右到左、第四步从下到上,然后再重复上面的步骤。import java.util.ArrayList;public class Solution { public ArrayList<integer> printMatr 展开全文
头像 cn_liz
发表于 2020-04-18 11:28:28
import java.util.ArrayList; public class Solution { public ArrayList<Integer> printMatrix(int[][] matrix) { ArrayList<Integer> 展开全文