leetcode 59.螺旋的方式生成一个 n*n 的 matrix Example:
Input: 3 Output: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
func generateMatrix(n int) [][]int {
matrix:=make([][]int,n)
for i:=0;i<n;i++{
matrix[i]=make([]int,n)
}
helper(matrix,n,1,0,n-1,0,n-1)
return matrix
}
func helper(matrix [][]int,n,index,row0,row1,column0,column1 int){
if index>n{
return
}
//上边
if row0 <= row1 && column0 <= column1{
for i:=column0;i<=column1;i++{
matrix[row0][i]=index
index++
}
}
//右边
if column0 <= column1 && row0<row1{
for i:=row0+1;i<=row1;i++{
matrix[i][column1]=index
index++
}
}
//下边
if row0 < row1 && column0 < column1{
for i:=column1-1;i>=column0;i--{
matrix[row1][i]=index
index++
}
}
//左边
if row0<row1-1 && column0<column1{
for i:=row1-1;i>row0;i--{
matrix[i][column0]=index
index++
}
}
//递归内层
helper(matrix,n,index,row0+1,row1-1,column0+1,column1-1)
}
我的运行结果是 [ [ 1, 2, 3 ], [ 8, 0, 4 ], [ 7, 6, 5 ] ]
debug 过程中,发现在运行递归函数的时候报错,如下
报错:
Exception 0xc000001d 0x0 0x0 0x4bd2ea
PC=0x4bd2ea
leetcode/leetcode59.helper(0xc0000a4000, 0x3, 0x3, 0x3, 0x9, 0x1, 0x1, 0x1, 0x1)
D:/*/leetcode/leetcode59/leetcode59.go:29 +0x47a
leetcode/leetcode59.helper(0xc0000a4000, 0x3, 0x3, 0x3, 0x9, 0x0, 0x2, 0x0, 0x2)
D:/*/leetcode/leetcode59/leetcode59.go:63 +0x41b
leetcode/leetcode59.generateMatrix(0x3, 0x0, 0x0, 0x0)
D:/*/leetcode/leetcode59/leetcode59.go:25 +0x1c9
leetcode/leetcode59.Run()
D:/*/leetcode/leetcode59/leetcode59.go:67 +0x46
main.main()
D:/*/leetcode/main.go:6 +0x27
rax 0x1
rbx 0x8
rcx 0xc000038000
rdi 0xc000078140
rsi 0x3
rbp 0xc00009bd78
rsp 0xc00009bd00
r8 0x100
r9 0x7
r10 0x39
r11 0x0
r12 0x2030000
r13 0x49249249249249
r14 0x18
r15 0x7
rip 0x4bd2ea
rflags 0x10203
cs 0x33
fs 0x53
gs 0x2b
大佬帮忙看看这是为什么报错???