我在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回答

liuyubobobo

2018-06-30

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


---


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


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

0
2
liuyubobobo
回复
new_chapter
算法竞赛的角度是初级水平;普通学习的角度大概是正常平均水平。如何训练速度?多练习!万事无他,唯手熟尔:)加油!
2018-06-30
共2条回复

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))
}

代码格式太乱,重新提交一遍


0
0

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7410 学习 · 1150 问题

查看课程