回溯算法216|17

216组合总和III

class Solution:
    def __init__(self):
        self.result = []
        self.path = []

    def combinationSum3(self, k: int, n: int) -> List[List[int]]:
        self.backTracking(k, n, 1)
        return self.result
        
    def backTracking(self, k, n, start_index) -> List:
        if sum(self.path) > n:
            return
        if len(self.path) == k and sum(self.path) == n:
            self.result.append(self.path[:])
        for i in range(start_index, 11 - k + len(self.path)):
            self.path.append(i)
            self.backTracking(k, n, i + 1)
            self.path.pop()

17电话号码的字母组合

class Solution:
    def __init__(self):
        self.letters = ["", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"]
        self.str = ""
        self.result = []

    def letterCombinations(self, digits: str) -> List[str]:
        if not digits:
            return self.result
        self.backTracking(digits, 0)
        return self.result

    def backTracking(self, digits, index) -> List:
        if (len(self.str) == len(digits)):
            self.result.append(self.str)
            return
        digit = int(digits[index])
        letter = self.letters[digit]
        for item in letter:
            self.str += item
            self.backTracking(digits, index + 1)
            self.str = self.str[:-1]

全部评论

相关推荐

07-02 13:52
武汉大学 golang
骗你的不露头也秒
牛客87776816...:😃查看图片
点赞 评论 收藏
分享
06-15 18:44
黄淮学院 Java
Lynn012:如果是居民楼还是算了吧,看着有点野呢
点赞 评论 收藏
分享
07-04 09:21
已编辑
Java
推拿大师:这是hr发的钓鱼贴吗
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务