leetcode59螺旋矩阵

leetcode59 Spiral Matrix II

Posted by BY on August 26, 2019

前言

猛起更新。

正文

问题来源

本问题来自leetcode上的56题。

问题描述

给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

示例 1:

输入: 3
输出:
[
 [ 1, 2, 3 ],
 [ 8, 9, 4 ],
 [ 7, 6, 5 ]
]

分析:

func generateMatrix(n int) [][]int {
    ans := make([][]int, n)
    for i := 0; i < n; i++ {
        ans[i] = make([]int, n)
    }
    index:=1
    x1, x2, y1, y2 := 0,  n-1, 0, n-1
    for x1 <= x2 && y1 <= y2 {
        for i := y1; i <= y2; i++ {
            ans[x1][i] = index
            index++
        }
        for i := x1+1; i <= x2; i++ {
            ans[i][y2] = index
            index++
        }
        if x1 < x2 && y1 < y2 {//这个判断可以不需要
            for i := y2-1; i >= y1; i-- {
                ans[x2][i] = index
                index++
            }
            for i := x2-1; i > x1; i-- {
                ans[i][y1] = index
                index++
            }
        }
        x1++
        x2--
        y1++
        y2--
    }
    return ans
}

总结:

勤思考。

结语

不管怎么样好好加油。