Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,Given n = 3
,
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]answer:class Solution {public: vector<vector<int>> generateMatrix(int n) { vector<vector<int>> result; if(n == 0) return result; else if( n < 0) n = -n; //result.reserve(n); vector<int> temp; for(int i = 0; i < n; i ++) temp.push_back(0); for(int i = 0; i < n; i ++) //result[i].reserve(n); result.push_back(temp); int left = 0, right = n - 1, length = n; int index = 0; while(length > 0){ for(int i = 0; i < length; i ++){ result[left][left + i] = ++ index; } cout << index << endl; for(int i = 1; i < length; i ++){ result[left + i][right] = ++ index; } cout << index << endl; for(int i = 1; i < length; i ++){ result[right][right - i] = ++ index; } cout << index << endl; for(int i = 1; i < length - 1; i ++){ result[right - i][left] = ++ index; } cout << index << endl; length -= 2; left ++; right --; } return result; }};
新闻热点
疑难解答