54. 螺旋矩阵

Problem

给你一个 mn 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

示例 1:

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

示例2:

输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]

提示:

  • m == matrix.length

  • n == matrix[i].length

  • 1 <= m, n <= 10

  • -100 <= matrix[i][j] <= 100

Solution

func spiralOrder(matrix [][]int) (ans []int) {
    l, r, t, b := 0, len(matrix[0])-1, 0, len(matrix)-1

    for {
        for i, j := t, l; j <= r; j++ {
            ans = append(ans, matrix[i][j])
        }
        if t++; t > b {break}

        for i, j := t, r; i <= b; i++ {
            ans = append(ans, matrix[i][j])
        }
        if r--; r < l {break}

        for i, j := b, r; j >= l; j-- {
            ans = append(ans, matrix[i][j])
        }
        if b--; b < t {break}

        for i, j := b, l; i >= t; i-- {
            ans = append(ans, matrix[i][j])
        }
        if l++; l > r {break}
    }

    return 
}

最后更新于

这有帮助吗?