请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

我在leetcode中用golang提交代码总是失败。我在leetcode playground可以正常运行。

以下code(39号问题)我可以在leetcode playground直接运行出正确的结果。但是submit 代码的时候总是提示我失败在这个输入。 我之前提交combination问题的时候也是同样的问题。可以在别处正常通过测试用例,但是submit就失败了。到底是我哪里粗心了,或者是leetcode的问题?

提前谢谢老师,给老师添麻烦了!

插一个题外话,我想买老师的新课听听红黑树等高级知识。但是和已经买的两门有很多重复的课程。有针对老学员的优惠吗?


package main


import (

    "fmt"

)


var result [][]int


func combineSum(candidates []int, target int, start int, c []int) {

if target <= 0 {

if target == 0 {

q := make([]int, len(c))

copy(q, c)

result = append(result, q)

}

return

}


for _, v := range candidates[start:] {

c = append(c, v)

combineSum(candidates, target-v, start, c)

c = c[:len(c)-1]

start++

1
<br>

}

}

func combinationSum(candidates []int, target int) [][]int {

if len(candidates) == 0 {

return result

}

var c []int

combineSum(candidates, target, 0, c)

return result

}


func main() {

    fmt.Printf("The result of combination sum: %v", combinationSum([]int{42, 26, 36, 38, 35, 41, 20, 47, 45, 23, 33, 39, 25, 43, 29, 31, 28, 48, 21, 46, 22, 30, 37, 32, 44, 40}, 55))

}


正在回答

插入代码

2回答

liuyubobobo 2018-06-30 04:51:03

我对golang不很熟悉,也没有太多在leetcode上使用golang提交问题的经验。不过我测试了一下,你的result相当于是全局变量,如果将result设置为combinationSum的局部变量,以参数形式传给递归函数combineSum完成算法逻辑,就可以Accept。或许和Leetcode的测试机制有关:Leetcode测试的main买有拿到你的全局result一类的。如果想了解详情,需要在Leetcode上找一下golang代码提交的指南和问题说明,或者给leetcode发邮件询问:)


---


慕课网的销售和讲师是完全没有关系的,讲师是没有任何优惠券的。我的《玩转数据结构》课程,总共十五章内容,只有三章内容和《算法和数据结构》有重复,主要是为了保证课程整体的完整性,但具体在讲解上是有区别的。如果觉得有重复内容不值,可以这么理解:《玩转数据结构》虽然课程页面标的时间是18个小时,但其实大概有25个小时。三章重复主题的内容远没有7个小时,你当做你并没有为这部分重复主题内容付费就好了,其实还赚了:)


当然,慕课网会不定期有促销活动,比如刚刚过去的618折扣力度很大。也可以等等下一次全网打折的时候:)

0 回复 有任何疑惑可以回复我~
  • 提问者 new_chapter #1
    感谢老师神速的回复!您的回答很有道理。我也刚学golang,正通过做题练习。
    
    我可不会觉得您的课不值,您的课程质量高,价格低,都是良心课程!我从中学习到很多。您降低了学习门槛,把这件枯燥的事变得很有乐趣。只是前八章除了第七章外看起来都很熟悉。稍稍有些心理不平衡罢了。即使这样,我也不可能觉得不值。
    
    另外请教一下,虽然回溯问题我已经大致掌握核心玩儿法,但是每道类似的题目还是有些细微区别。我做课后练习题,每一道大概要一个小时思考,编码加调试。这算什么水平?您有什么训练速度的好方法吗?
    回复 有任何疑惑可以回复我~ 2018-06-30 07:00:30
  • liuyubobobo 回复 提问者 new_chapter #2
    算法竞赛的角度是初级水平;普通学习的角度大概是正常平均水平。如何训练速度?多练习!万事无他,唯手熟尔:)加油!
    回复 有任何疑惑可以回复我~ 2018-06-30 07:25:40
提问者 new_chapter 2018-06-29 23:49:49
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package main
 
import (
    "fmt"
)
 
var result [][]int
 
func combineSum(candidates []int, target int, start int, c []int) {
    if target <= 0 {
        if target == 0 {
            q := make([]int, len(c))
            copy(q, c)
            result = append(result, q)
        }
        return
    }
 
    for _, v := range candidates[start:] {
        c = append(c, v)
        combineSum(candidates, target-v, start, c)
        c = c[:len(c)-1]
        start++
    }
}
func combinationSum(candidates []int, target int) [][]int {
    if len(candidates) == 0 {
        return result
    }
    var c []int
    combineSum(candidates, target, 0, c)
    return result
}
 
func main() {
    fmt.Printf("The result of combination sum: %v", combinationSum([]int{42, 26, 36, 38, 35, 41, 20, 47, 45, 23, 33, 39, 25, 43, 29, 31, 28, 48, 21, 46, 22, 30, 37, 32, 44, 40}, 55))
}
 
代码格式太乱,重新提交一遍


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号