V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cmyun
V2EX  ›  LeetCode

golang leetcode59 螺旋生成 matrix

  •  
  •   cmyun · 2019-11-09 16:42:10 +08:00 · 12511 次点击
    这是一个创建于 1831 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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
    

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

    1 条回复    2019-11-09 17:02:51 +08:00
    cmyun
        1
    cmyun  
    OP
       2019-11-09 17:02:51 +08:00
    个位路过的大佬,拜托帮忙指正一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5331 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 07:06 · PVG 15:06 · LAX 23:06 · JFK 02:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.