59. Spiral Matrix II

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>>result(n, vector<int>(n));
	/*vector<int>temp;*/
	int i = 0, j = 0, flag = 0;//flag作爲換行或者換列的標記;
	for (int num = 1; num <= n*n; num++)
	{
		result[i][j] = num;
		if (flag == 0)
		{
			if (j + 1 < n&&result[i][j + 1] == 0)
				j++;
			else
			{
				i++;
				flag = 1;
			}
		}
		else if (flag == 1)
		{
			if (i + 1 < n&&result[i + 1][j] == 0)
				i++;
			else
			{
				j--;
				flag = 2;
			}
		}
		else if (flag == 2)
		{
			if (j - 1 >= 0 && result[i][j - 1] == 0)
				j--;
			else
			{
				i--;
				flag = 3;
			}
		}
		else
		{
			if (i - 1 >= 0 && result[i - 1][j] == 0)
				i--;
			else
			{
				j++;
				flag = 0;
			}
		}
	}
	return result;
    }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章