LeetCode - PermutationsSpiral Matrix II
主要是对下标的操作。
1 class Solution { 2 public: 3 vector<vector<int> > generateMatrix(int n) { 4 vector<vector<int> > ret(n, vector<int>(n)); 5 6 int i = 0, j = n-1; 7 int num = 1; 8 9 for ( ; i < j; ++i, --j) 10 { 11 // 向右赋值 12 for (int k = i; k <= j; k++) 13 { 14 ret[i][k] = num++; 15 } 16 // 向下赋值 17 for (int k = i+1; k < j; k++) 18 { 19 ret[k][j] = num++; 20 } 21 // 向左赋值 22 for (int k = j; k >= i; --k) 23 { 24 ret[j][k] = num++; 25 } 26 // 向上赋值 27 for (int k = j-1; k > i; --k) 28 { 29 ret[k][i] = num++; 30 } 31 } 32 33 // n为奇数时,单独赋值 34 if (i == j) 35 ret[i][j] = num; 36 37 return ret; 38 } 39 };