剑指 Offer 29:顺时针打印矩阵

简介: 剑指 Offer 29:顺时针打印矩阵

题目

题目链接

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

示例 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]

解题

leetcode-54:螺旋矩阵是一样的

方法一:模拟

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        if(matrix.empty()) return {};
        int m=matrix.size();
        int n=matrix[0].size();
        int left=0,top=0,right=n-1,down=m-1;
        vector<vector<int>> dirs={{0,1},{1,0},{0,-1},{-1,0}};
        int cur_d=0;
        int x=0,y=0;
        vector<int> res;
        for(int i=0;i<m*n;i++){
            int val=matrix[x][y];
            res.push_back(val);
            if(cur_d==0&&y==right){
                top++;
                cur_d++;
            }
            else if(cur_d==1&&x==down){
                right--;
                cur_d++;
            }
            else if(cur_d==2&&y==left){
                down--;
                cur_d++;
            }
            else if(cur_d==3&&x==top){
                left++;
                cur_d++;
            }
            cur_d%=4;
            x+=dirs[cur_d][0];
            y+=dirs[cur_d][1];
        }
        return res;
    }
};
相关文章
|
1月前
剑指 Offer 12:矩阵中的路径
剑指 Offer 12:矩阵中的路径
22 0
|
1月前
|
机器学习/深度学习 Windows
剑指 Offer 62:圆圈中最后剩下的数字
剑指 Offer 62:圆圈中最后剩下的数字
18 0
|
1月前
|
Java
每日一题《剑指offer》数组篇之顺时针打印矩阵
每日一题《剑指offer》数组篇之顺时针打印矩阵
40 0
每日一题《剑指offer》数组篇之顺时针打印矩阵
|
1月前
|
Java
【剑指offer】-顺时针打印矩阵-19/67
【剑指offer】-顺时针打印矩阵-19/67
|
9月前
|
算法
剑指 Offer 12. 矩阵中的路径
剑指 Offer 12. 矩阵中的路径
|
算法
图解LeetCode——剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
图解LeetCode——剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
84 1
剑指offer 28. 顺时针打印矩阵
剑指offer 28. 顺时针打印矩阵
41 0
剑指 Offer 58 - I. 翻转单词顺序
剑指 Offer 58 - I. 翻转单词顺序
54 0
剑指 Offer 58 - I. 翻转单词顺序