请稍等 ...
×

采纳答案成功!

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

我在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++


}

}

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
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下载
官方微信