package main func main() { //fmt.Println(spiralOrder([][]int{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}, {17, 18, 19, 20}, {21, 22, 23, 24}})) } //func spiralOrder(matrix [][]int) []int { // step := len(matrix) * len(matrix[0]) // forward := make([][]string, len(matrix)) // result := make([]int, 0) // for i := range forward { // forward[i] = make([]string, len(matrix[0])) // for j := range forward[i] { // forward[i][j] = "" // 初始化为空字符串 // } // } // //fmt.Println(forward, "1") // for i := 0; i < len(matrix); i++ { // for j := 0; j < len(matrix[i]); j++ { // if j-1 < 0 && i-1 < 0 { // if len(matrix[i]) == 1 { // forward[i][j] = "d" // continue // } // forward[i][j] = "r" // continue // } // if j+1 > len(forward[0])-1 && i-1 < 0 { // forward[i][j] = "d" // continue // } // if j+1 > len(forward[0])-1 && i+1 > len(forward)-1 { // forward[i][j] = "l" // continue // } // if j-1 < 0 && i+1 > len(forward)-1 { // forward[i][j] = "u" // continue // } // } // } // fmt.Println(forward, "2") // left, right := 0, 0 // nowforward := forward[left][right] // for { // if step == 0 { // break // } // fmt.Println("当前forward:", nowforward) // if forward[left][right] != "" { // nowforward = forward[left][right] // } // if nowforward == "u" && left-1 >= 0 { // if forward[left-1][right] != "" { // //fmt.Println("向上:", forward[left-1][right]) // result = append(result, matrix[left][right]) // nowforward = "r" // right++ // step-- // continue // } // // } // //fmt.Println("本次方向:", nowforward) // result = append(result, matrix[left][right]) // if nowforward == "r" { // //fmt.Println("向右") // right++ // } else if nowforward == "d" { // left++ // } else if nowforward == "l" { // right-- // } else if nowforward == "u" { // //fmt.Println("变更向上:", forward[left-1][right]) // left-- // } // step-- // } // //fmt.Println(result) // // return result //}