我在leetcode中用golang提交代码总是失败。我在leetcode playground可以正常运行。
来源:8-5 回溯法解决组合问题的优化
new_chapter
2018-06-29
以下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回答
-
我对golang不很熟悉,也没有太多在leetcode上使用golang提交问题的经验。不过我测试了一下,你的result相当于是全局变量,如果将result设置为combinationSum的局部变量,以参数形式传给递归函数combineSum完成算法逻辑,就可以Accept。或许和Leetcode的测试机制有关:Leetcode测试的main买有拿到你的全局result一类的。如果想了解详情,需要在Leetcode上找一下golang代码提交的指南和问题说明,或者给leetcode发邮件询问:)
---
慕课网的销售和讲师是完全没有关系的,讲师是没有任何优惠券的。我的《玩转数据结构》课程,总共十五章内容,只有三章内容和《算法和数据结构》有重复,主要是为了保证课程整体的完整性,但具体在讲解上是有区别的。如果觉得有重复内容不值,可以这么理解:《玩转数据结构》虽然课程页面标的时间是18个小时,但其实大概有25个小时。三章重复主题的内容远没有7个小时,你当做你并没有为这部分重复主题内容付费就好了,其实还赚了:)
当然,慕课网会不定期有促销活动,比如刚刚过去的618折扣力度很大。也可以等等下一次全网打折的时候:)
022018-06-30 -
new_chapter
提问者
2018-06-29
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)) } 代码格式太乱,重新提交一遍
00
相似问题