提升学历报名入口,seo模拟点击有用吗,个人网站欣赏,开发公司与物业公司的承包合同216. 组合总和 III
这个思路还是#xff0c;三部曲#xff1a;
终止条件处理单层节点回溯节点
题中说的是#xff0c;1到9的数#xff0c;不能有重复。 k个数#xff0c;和为n。 那么只要 len(path) k 的时候#xff0c;判断 n 为0#xff0c;就可以入切片了。
fun…216. 组合总和 III
这个思路还是三部曲
终止条件处理单层节点回溯节点
题中说的是1到9的数不能有重复。 k个数和为n。 那么只要 len(path) k 的时候判断 n 为0就可以入切片了。
func combinationSum3(k int, n int) [][]int {path []int{}result [][]int{}// tmpPath make([]int, k)nfs(k, n, 1)return result
}var path []int
var tmpPath []int
var result [][]int
func nfs(k, n, startIndex int) bool {// 终止条件if (len(path) k ) {if n 0 {var tmpPath make([]int, k)copy(tmpPath, path)result append(result, tmpPath)}return true}// 广度遍历for i : startIndex; i 9; i {// 处理单个节点path append(path, i)// 递归nfs(k, n-i, i1)// 回溯if (len(path) 0) {path path[:len(path)-1]}}return true
}17. 电话号码的字母组合
这个思路就是在每一个startIndex都是一个key然后在横向遍历字符串 终止条件是startIndex maxIndex。此时就是每一个数字都遍历到了
var table map[byte]string {2: abc,3: def,4: ghi,5: jkl,6: mno,7: qprs,8: tuv,9: wxyz,
}var digit string
var path []string
var result []stringfunc letterCombinations(digits string) []string {// 这个思路还是组合的问题if digits {return []string{}}digit digitspath []string{}result []string{}nfs(0, len(digits)-1)return result
}func nfs(currIndex, maxIndex int) bool {// 终止条件if currIndex maxIndex {var tmp stringfor _, x : range path {tmp x}result append(result, tmp)return true}var key digit[currIndex]var data table[key]for i : 0; i len(data); i {// 单个节点path append(path, string(data[i]))nfs(currIndex1, maxIndex)// 回溯if (len(path) 0) {path path[:len(path)-1]}}return true
}