已解答 中等
相关标签
相关企业找出所有相加之和为 n
的 k
个数的组合,且满足下列条件:
- 只使用数字1到9
- 每个数字 最多使用一次
返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。
示例 1:
输入: k = 3, n = 7
输出: [[1,2,4]]
解释:
1 + 2 + 4 = 7
没有其他符合的组合了。
示例 2:
输入: k = 3, n = 9
输出: [[1,2,6], [1,3,5], [2,3,4]]
解释:
1 + 2 + 6 = 9
1 + 3 + 5 = 9
2 + 3 + 4 = 9
没有其他符合的组合了。
示例 3:
输入: k = 4, n = 1
输出: []
解释: 不存在有效的组合。
在[1,9]范围内使用4个不同的数字,我们可以得到的最小和是1+2+3+4 = 10,因为10 > 1,没有有效的组合。
提示:
2 <= k <= 9
1 <= n <= 60
func combinationSum3(k int, n int) [][]int { varres [][]int vartrace []int varsumint varbracktracefunc(k int, startPos int) bracktrace = func(k int, startPos int) { if k == 0 && sum == n { res = append(res, append([]int{}, trace...)) return } if k == 0 || sum == n { return } fori := startPos; i < 9; i++ { trace = append(trace, i+1) sum += i + 1 bracktrace(k-1, i+1) sum -= i + 1 trace = trace[:len(trace)-1] } } bracktrace(k, 0) return res }
已解答 中等
相关标签
相关企业给定一个仅包含数字 2-9
的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例 1:
输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
示例 2:
输入:digits = ""
输出:[]
示例 3:
输入:digits = "2"
输出:["a","b","c"]
提示:
0 <= digits.length <= 4
digits[i]
是范围['2', '9']
的一个数字。
func letterCombinations(digits string) []string { if len(digits) == 0 { return nil } phoneWord := [9][]byte{ {}, {'a','b','c'}, {'d','e','f'}, {'g','h','i'}, {'j','k','l'}, {'m','n','o'}, {'p','q','r','s'}, {'t','u','v'}, {'w','x','y','z'}, } var res []string var traces string var backtrace func(digitsstring) backtrace = func(digits string) { if len(digits) == 0 { res = append(res, traces) return } oneDigit := digits[0] for _, v := range phoneWord[int(oneDigit)-'1'] { traces = traces + string(v) backtrace(digits[1:]) traces = traces[:len(traces)-1] } } backtrace(digits) return res } .
ok
标签:216,digits,组合,示例,int,res,随想录,字母组合,traces From: https://www.cnblogs.com/suxinmian/p/18027047