leetcode- back ③

77 questions

 

 Back:

class Solution:
    def combine(self, n: int, k: int) -> List[List[int]]:
        res = []
        def backtrack(i,temp_list):
            if len(temp_list)==k:
                res.append(temp_list)
            for j in range(i,n+1):
                backtrack(j+1,temp_list+[j])
        backtrack(1,[])
        return res

78 questions:

 

Back:

class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        res = []
        def helper(i,tmp):
            res.append(tmp)
            for j in range(i,len(nums)):
                helper(j+1,tmp+[nums[j]])
        helper(0,[])
        return res

90 questions:

 

 Back:

class Solution:
    def subsetsWithDup(self, nums: List[int]) -> List[List[int]]:
        res = []
        n = len(nums)
        nums.sort()
        def helper(idx, tmp):
            res.append(tmp)
            for i in range(idx, n):
                if i > idx and nums[i] == nums[i-1]:
                    continue
                helper(i+1, tmp + [nums[i]])
        helper(0, [])
        return res

93 questions

 

 Back:

class Solution:
    def restoreIpAddresses(self, s: str) -> List[str]:
        res = []
        n = len(s)

        def backtrack(i, tmp, flag):
            if i == n and flag == 0:
                res.append(tmp[:-1])
                return
            if flag < 0:
                return
            for j in range(i, i + 3):
                if j < n:
                    if i == j and s[j] == "0":
                        backtrack(j + 1, tmp + s[j] + ".", flag - 1)
                        break
                    if 0 < int(s[i:j + 1]) <= 255:
                        backtrack(j + 1, tmp + s[i:j + 1] + ".", flag - 1)

        backtrack(0, "", 4)
        return res

131 title

 

 Backtracking;

class Solution:
    def partition(self, s: str) -> List[List[str]]:
        res = []
        temp = []
        def backtrack(s,temp):
            if not s:
                res.append(temp)
            for i in range(1,len(s)+1):
                if s[:i][::-1] == s[:i]:
                    backtrack(s[i:],temp+[s[:i]])
        backtrack(s,[])
        return res

216 title:

 

 Back:

class Solution:
    def combinationSum3(self, k: int, n: int) -> List[List[int]]:
        res = []
        def helper(k,n,start,tmp):
            if k==0:
                if n==0:
                    res.append(tmp)
                return
            for i in range(start,10):
                if n - i < 0:break
                helper(k-1,n-i,i+1,tmp+[i])
        helper(k,n,1,[])
        return res

 

Guess you like

Origin www.cnblogs.com/oldby/p/11715621.html