83 lines
2.0 KiB
Go
83 lines
2.0 KiB
Go
|
|
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
|
||
|
|
//}
|