>>>输入一个二维数组,要求顺时针打印数组内容

题目链接https://leetcode-cn.com/problems/spiral-matrix/

题目本身不难,但是逻辑必须想清楚,多次吃亏,这次一定要牢记

(以下代码是将结果存在一维数组中返回)

 1 int num,sum=0;
 2 vector<int> spiralOrder(vector<vector<int>>& ma) {
 3     num=ma.size()*ma[0].size();
 4     int i,j,x=0,y=0;
 5     int sizex=ma.size(),sizey=ma[0].size();
 6     vector<int> res;
 7     while(sum<num){
 8         for(i=x,j=y;j<sizey-y;j++){//→→→
 9             res.push_back(ma[i][j]);
10             if((++sum)>=num) {
11                 return res;
12             } 
13         }
14         x=i+1;y=j-1;
15         for(i=x,j=y;i<sizex-x+1;i++){//↓↓↓
16             res.push_back(ma[i][j]);
17             if((++sum)>=num) {
18                 return res;
19             } 
20         }
21         x=i-1;y=j-1;
22         for(i=x,j=y;j>=sizey-y-2;j--){//←←←
23             res.push_back(ma[i][j]);
24             if((++sum)>=num) {
25                 return res;
26             } 
27         }
28         x=i-1;y=j+1;
29         for(i=x,j=y;i>=sizex-x-1;i--){//↑↑↑
30             res.push_back(ma[i][j]);
31             if((++sum)>=num) {
32                 return res;
33             } 
34         }
35         x=i+1;y=j+1;
36     }
37     return res;
38 }

 

 posted on 2020-11-12 19:34  Kaniso_Vok  阅读(26)  评论(0编辑  收藏