首页 > 代码库 > Spiral Matrix II <leetcode>
Spiral Matrix II <leetcode>
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3
,
You should return the following matrix:
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]
]
算法:分四个方向,右下左上,分别扫描,能填数字就填,不能填就改变方向,该题不难,但是容易有小错误,代码如下:
1 class Solution { 2 public: 3 vector<vector<int>> result; 4 vector<vector<int> > generateMatrix(int n) { 5 int total=n*n; 6 int x=0; 7 int y=0; 8 int direction=0; 9 result.clear();10 for(int i=0;i<n;i++)11 {12 vector<int> nn;13 result.push_back(nn);14 for(int j=0;j<n;j++)15 {16 result[i].push_back(0);17 }18 }19 for(int i=1;i<=total;i++)20 {21 if(0==result[x][y])22 {23 result[x][y]=i;24 }25 else if(0==direction)26 {27 if(y+1<=n-1&&0==result[x][y+1])28 {29 result[x][y+1]=i;30 y++;31 }32 else 33 {34 direction=1;35 36 i--;37 }38 }39 else if(1==direction)40 {41 if(x+1<=n-1&&0==result[x+1][y])42 {43 result[x+1][y]=i;44 x++;45 }46 else47 {48 direction=2;49 i--;50 }51 }52 else if(2==direction)53 {54 if(y-1>=0&&0==result[x][y-1])55 {56 result[x][y-1]=i;57 y--;58 }59 else60 {61 direction=3;62 i--;63 }64 }65 else if(3==direction)66 {67 if(x-1>=0&&0==result[x-1][y])68 {69 result[x-1][y]=i;70 x--;71 }72 else73 {74 direction=0;75 i--;76 }77 }78 }79 return result;80 }81 };
Spiral Matrix II <leetcode>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。