代码随想录刷题第二十五天
组合总和III (LC 216) 简单
题目思路:
代码实现:
class Solution(object):
def __init__(self):
self.path = []
self.result = []
def combinationSum3(self, k, n):
"""
:type k: int
:type n: int
:rtype: List[List[int]]
"""
self.backtracking(k, n, 1)
return self.result
def backtracking(self, k, n, startindex):
if len(self.path)==k:
if n == 0:
self.result.append(self.path[:])
return
for i in range(startindex, 10+1-(k-len(self.path))):
n-=i
self.path.append(i)
self.backtracking(k,n,i+1)
self.path.pop()
n+=i
return
电话号码组合 (LC 17) 困难
题目思路:
代码实现:
class Solution:
def __init__(self):
self.mapping = ["", "", "abc", "def", "ghi", "jkl", "mno",
"pqrs", "tuv", "wxyz"]
self.s = ""
self.result = []
def letterCombinations(self, digits: str) -> List[str]:
"""
:type digits: str
:rtype: List[str]
"""
self.backtracking(digits, 0)
return self.result
def backtracking(self, digits, height):
if len(digits) == 0:
return ""
if len(self.s) == len(digits):
self.result.append(self.s)
return
digit = int(digits[height])
letters = self.mapping[digit]
for letter in letters:
self.s += letter
self.backtracking(digits, height+1)
self.s = self.s[:-1]
return