m0_61353025 2021-12-09 15:21 采纳率: 0%
浏览 10

leetcode113题 切片不拷贝结果重复 不正确

func pathSum(root *TreeNode, targetSum int) [][]int {
    res := make([][]int, 0)
    tmp := make([]int, 0)
    var dfs func(root *TreeNode, sum int)
    dfs = func(root *TreeNode, sum int) {
        if root == nil {
            return
        }
        tmp = append(tmp, root.Val)
        if root.Left == nil && root.Right == nil && root.Val == sum {
            // a := make([]int, len(tmp))
            // copy(a, tmp)
            res = append(res, tmp)
        }
        dfs(root.Right, sum-root.Val)
        dfs(root.Left, sum-root.Val)

        tmp = tmp[:len(tmp)-1]
    }
    dfs(root, targetSum)
    return res

}

运行结果

img

注释那两行开启结果就会正确 为什么呢?求解答下

  • 写回答

1条回答 默认 最新

  • CSDN专家-黄老师 2021-12-09 17:08
    关注

    因为你只定义了一次切片tmp,你将tmp写入切片res 的之后在重新tmp := make([]int, 0)定义切片tmp就行了

    评论

报告相同问题?

问题事件

  • 创建了问题 12月9日

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制