【题目】
给定一个矩阵matrix,按照“之”字形的方式打印这个矩阵。例如
1, 2, 3, 4
5, 6, 7, 8
9, 10, 11, 12
打印结果是1, 2, 5, 9 , 6, 3, 4 , 7 , 10 , 11, 8, 12。要求额外空间复杂度是O(1)。
package main
import (
"fmt"
)
func calPrintNum(arr [][]int, tR, tC, dR, dC int) {
var lineMove bool = false
var x int = 0
var y int = 0
for {
fmt.Printf("%d ", arr[tR][tC])
if tR == 0 && tC < dC {
lineMove = !lineMove
if lineMove {
x = 0
y = 1
} else {
x = 1
y = -1
}
}
if tR == 0 && tC == dC {
lineMove = !lineMove
if lineMove {
x = 1
y = 0
} else {
x = 1
y = -1
}
}
if tC == 0 && tR > 0 && tR < dR {
lineMove = !lineMove
if lineMove {
x = 1
y = 0
} else {
x = -1
y = 1
}
}
if tC == 0 && tR == dR {
lineMove = !lineMove
if lineMove {
x = 0
y = 1
} else {
x = -1
y = 1
}
}
if tR == dR && tC > 0 && tC < dC {
lineMove = !lineMove
if lineMove {
x = 0
y = 1
} else {
x = -1
y = 1
}
}
if tC == dC && tR > 0 && tR < dR {
lineMove = !lineMove
if lineMove {
x = 1
y = 0
} else {
x = 1
y = -1
}
}
if tR == dR && tC == dC {
break
}
tR = tR + x
tC = tC + y
}
}
func main() {
matrix := [][]int {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
}
tR := 0
tC := 0
dR := len(matrix) - 1
dC := len(matrix[0]) - 1
calPrintNum(matrix, tR, tC, dR, dC)
}
先实现了一版,后面再把书上的写法改写成go语言的。
看到其他人用java实现的:https://www.cnblogs.com/DarrenChan/p/8759077.html