golang leetcode59 螺旋生成 matrix

2019-11-09 16:42:10 +08:00
 cmyun

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

大佬帮忙看看这是为什么报错???

12507 次点击
所在节点    LeetCode
1 条回复
cmyun
2019-11-09 17:02:51 +08:00
个位路过的大佬,拜托帮忙指正一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/617940

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX