我一直在练习编码面试问题,这个当前的例子 产品总和与围棋。基本上,您需要获取一个嵌套数组并返回其乘积总和。
示例:[1,3,[2,[5],-3],7] = 1 + 3 + 2*(2-3) + 3*(5) + 7 = 24
这也应该等于:1 + 3 + 2*(2) + 2*(-3) + 3*5 + 7 = 24
但是,当我尝试在代码中实现此内容时,我只能获得第一个示例。
func ProductSum(array []interface{}) int {
sum := productSum(array, 1)
fmt.Println(sum)
return sum
}
func productSum(array SpecialArray, multiplier int) int {
sum := 0
for _, el := range array {
if cast, ok := el.(SpecialArray); ok {
sum += productSum(cast, multiplier+1)
} else if cast, ok := el.(int); ok {
sum += cast
}
}
return sum * multiplier
}
如果我更改为 ,然后更改为 - ,则该函数无法按预期工作。我已经尝试过通过递归堆栈来处理这个问题,但仍然感到困惑。sum += castsum += cast * multiplierreturn sum * multiplierreturn sum
拉莫斯之舞
相关分类