力扣:59. 螺旋矩陣 II
題目:
59. 螺旋矩陣 II
難度中等975收藏分享切換為英文接收動態(tài)反饋
給你一個正整數(shù)?n
?,生成一個包含?1
?到?n2
?所有元素,且元素按順時針順序螺旋排列的?n x n
?正方形矩陣?matrix
?。
?
示例 1:
輸入:n = 3輸出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
輸入:n = 1輸出:[[1]]
?
提示:
1 <= n <= 20
第一種對法:
class?Solution?{
public:
????vector<vector<int>>?generateMatrix(int?n)?{
????????vector<vector<int>>?s(n,vector<int>(n));
????????int?top=0,bottom=n-1;
????????int?right=n-1,left=0;
????????int?cnt?=?1;
????????while(top?<=?bottom?&&?right?>=?left){
????????????for(int?i=left;i<=right;i++){
????????????????s[top][i]=cnt++;
????????????}
????????????for(int?i=top+1;i<=bottom;i++){
????????????????s[i][right]=cnt++;
????????????}
????????????for(int?i=right-1;i>=left;i--){
????????????????s[bottom][i]=cnt++;
????????????}
????????????for(int?i=bottom-1;i>top;i--){
????????????????s[i][left]=cnt++;
????????????}
????????????top++,bottom--;
????????????left++,right--;
????????}
????????return?s;
????}
};
注意細節(jié):循環(huán)中的條件,行和列
時間復(fù)雜度O(n^2)
空間復(fù)雜度O(1)