LeetCode 面试题29. 顺时针打印矩阵

LeetCode 面试题29. 顺时针打印矩阵

  大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客

本文原创为亓官劼,请大家支持原创,部分平台一直在盗取博主的文章!!!

博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官劼的博客


题目

难度 简单

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

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

题解:

  题目要求我们按顺时针进行打印,这里面使用的是返回一个vector,而不是真的打印,我们只需要按顺时针的顺序来将数据添加到vector中即可,要注意一下边界问题,完整的题解代码为:

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        vector<int> ans;
        if(matrix.size() == 0)
            return ans;
        int row = matrix.size();
        int col = matrix[0].size();
        int num = row * col;
        int circle = 0;
        while(num){
            // right
            for(int i = circle; (i < col - circle)&&num; i++){
                ans.push_back(matrix[circle][i]);
                num--;
            }
            // down
            for(int i = 1+circle; (i <= row-circle-1)&&num; i++){
                ans.push_back(matrix[i][col-circle-1]);
                num--;
            }
            // left
            for(int i = col-circle-2; (i >= circle)&&num; i--){
                ans.push_back(matrix[row-circle-1][i]);
                num--;
            }
            // up
            for(int i = row-circle-2; (i >= circle+1)&&num; i--){
                ans.push_back(matrix[i][circle]);
                num--;
            }
            circle++;
        }
        return ans;
    }
};

  大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客

本文原创为亓官劼,请大家支持原创,部分平台一直在盗取博主的文章!!!

博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官劼的博客

你可能感兴趣的:(LeetCode)