leetcode——59——Spiral Matrix II

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 ]]

class Solution {
public:
	vector<vector<int>> generateMatrix(int n) {
		if (n <= 0)
			return vector<vector<int>>();

		vector<vector<int>> matrix(n, vector<int>(n, 0));
		int start = 1;

        n = n-1;

		for (int x = 0, y = 0; x <= n && y <= n; x++, y++)
		{
			//输出矩阵首行
			for (int j = y; j <= n; ++j)
			{
				matrix[x][j] = start++;
			}//while


			//输出矩阵最右列
			for (int i = x + 1; i <= n; ++i)
			{
				matrix[i][n] = start++;
			}//while

			//输出矩阵最底行
			for (int j = n - 1; j >= y && x != n; --j)
			{
				matrix[n][j] = start++;
			}

			//输出矩阵最左列
			for (int i = n - 1; i > x && y != n; --i)
			{
				matrix[i][y] = start++;
			}


			n--;
		}//for

		return matrix;
		
	}
};

你可能感兴趣的:(LeetCode,算法题)