X 关闭

当前关注:力扣:剑指 Offer 29. 顺时针打印矩阵
来源: 哔哩哔哩      时间:2023-03-14 18:54:39

题目:

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

难度简单509收藏分享切换为英文接收动态反馈


(资料图)

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

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

注意:本题与主站 54 题相同:https://leetcode-cn.com/problems/spiral-matrix/

第一种对法:

class Solution {

public:

vector<int> spiralOrder(vector<vector<int>>& matrix) {

if(matrix.size()==0||matrix[0].size()==0){

return {};

}

vector<int> s;

int col=matrix[0].size();

int row=matrix.size();

int right,left,top,bottom;

right=col-1,left=0;

top=0,bottom=row-1;

int cnt=0;

while(right>=left&&top<=bottom){

for(int i=left;i<=right;i++){

s.push_back(matrix[top][i]);

cnt++;

if(cnt==col*row){

return s;

}

}

for(int i=top+1;i<=bottom;i++){

s.push_back(matrix[i][right]);

cnt++;

if(cnt==col*row){

return s;

}

}

for(int i=right-1;i>=left;i--){

s.push_back(matrix[bottom][i]);

cnt++;

if(cnt==col*row){

return s;

}

}

for(int i=bottom-1;i>top;i--){

s.push_back(matrix[i][left]);

cnt++;

if(cnt==col*row){

return s;

}

}

left++,right--;

top++,bottom--;

}

return s;

}

};

注意细节:不要把横或列搞错,不要把循环写错

标签:

上一篇:

下一篇:

广告

X 关闭

广告

X 关闭