func PowOfThree(n int) { res := make([]int, 0) var backTrack func(int) backTrack = func(curr int) { if curr == n { return } k, remain := 1, n-curr if remain > 0 { for k < remain { k *= 3 } } else { for k < (-remain) { k *= 3 } } if remain > 0 { if k-remain > remain { k /= 3 } res = append(res, k) backTrack(curr + k) } else { if k+remain > -remain { k /= 3 } res = append(res, -k) backTrack(curr - k) } } backTrack(0) print(n, "=") for i, v := range res { if i > 0 && v > 0 { print("+") } print(v) } println() }
点赞 评论

相关推荐

别像我这样不及时填写个人信息不知道哪个hr给我扔暑期了,还没来得及填写就挂了
小狐狸只想要一个offer:我宣布,这是我今天看到最好笑的笑话,谢谢你
投递拼多多集团-PDD等公司10个岗位 > 牛客创作赏金赛
点赞 评论 收藏
分享
牛客网
牛客企业服务