今天的两道题,都是有关回溯的,第一道是自己做出来的,第二道的循环和终止条件没把握好,看了解析,
class Solution:
def combinationSum3(self, k: int, n: int) -> List[List[int]]:
## 采用回溯算法解决
indexC = 1
temp = []
result = []
def combinS(k,n,index):
if len(temp) == k:
if sum(temp) == n:
result.append(temp[:])
return
for i in range(index,10):
temp.append(i)
combinS(k,n,i+1)
temp.pop()
return result
combinS(k,n,indexC)
return result
class Solution:
s = ""
def letterCombinations(self, digits: str) -> List[str]:
letterMap = [
"", # 0
"", # 1
"abc", # 2
"def", # 3
"ghi", # 4
"jkl", # 5
"mno", # 6
"pqrs", # 7
"tuv", # 8
"wxyz" # 9
]
result = []
def letterC(digits,index):
if index == len(digits):
result.append(self.s)
return
digit = int(digits[index])
letters = letterMap[digit]
for i in range(len(letters)):
self.s += letters[i]
letterC(digits,index+1)
self.s = self.s[:-1]
if len(digits) == 0:
return []
letterC(digits,0)
return result
今天的回溯还需要好好把握