算法第24天|93.复原IP地址、 78.子集、 90.子集II

93.复原IP地址

题目

思路与解法

python 复制代码
class Solution:
    def restoreIpAddresses(self, s: str) -> List[str]:
        self.res = []
        self.backtracking(s, [], 0)
        return self.res
        

    def backtracking(self, s: str, path, startIdx: int):
        if startIdx >= len(s) and len(path) == 4:
            self.res.append('.'.join(path))
            return
        if len(path) > 4:
            return

        i = startIdx + 1
        while i <= len(s):
            if self.is_addr(s, startIdx, i):
                path.append(s[startIdx:i])
                self.backtracking(s, path, i)
                path.pop()
            i += 1

    def is_addr(self, s, startIdx, endIdx):
        s_int = int(s[startIdx:endIdx])
        if s[startIdx] == '0' and endIdx - startIdx > 1:
            return False
        print(s_int)
        if s_int >= 0 and s_int <= 255:
            return True
        else:
            return False

            

78.子集

题目

思路与解法

python 复制代码
class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        self.res = []
        self.path = []
        self.backtracking(nums, 0)
        return self.res


    def backtracking(self,nums:List[int], startIdx):
        self.res.append(self.path[:])
        if startIdx >= len(nums):
            return
        i = startIdx
        while i < len(nums):
            self.path.append(nums[i])
            self.backtracking(nums, i+1)
            self.path.pop()
            i += 1

90.子集II

题目

思路与解法

python 复制代码
class Solution:
    def subsetsWithDup(self, nums: List[int]) -> List[List[int]]:
        self.res = []
        self.path = []
        nums.sort()
        self.backtracking(nums, 0)
        return self.res

    def backtracking(self, nums, startIdx):
        self.res.append(self.path[:])

        if startIdx >= len(nums):
            return
        i = startIdx
        while i < len(nums):
            self.path.append(nums[i])
            self.backtracking(nums, i+1)
            self.path.pop()
            i += 1
            while i < len(nums) and nums[i] == nums[i-1]:
                i += 1
        
        
相关推荐
我想睡觉2614 分钟前
Python训练营打卡DAY51
开发语言·人工智能·python·深度学习·机器学习
异常君10 分钟前
FST 在 Elasticsearch 中的核心应用与性能优化实践
java·elasticsearch·性能优化
周某某~12 分钟前
六.原型模式
java·设计模式·原型模式
异常君15 分钟前
通过 Elasticsearch 实现分布式事务的可靠方案
java·分布式·elasticsearch
yutian060620 分钟前
C# TextBox 控件限制输入字符为十六进制字符串
开发语言·c#
倔强的石头_26 分钟前
【数据结构与算法 经典例题】使用队列实现栈(图文详解)
后端·算法
猛犸MAMMOTH26 分钟前
Python打卡第51天
开发语言·python·深度学习
小安同学iter30 分钟前
JUC并发编程(四)常见模式
java·开发语言
不再幻想,脚踏实地42 分钟前
Linux简单的操作
java·linux·运维·服务器
黑色的山岗在沉睡43 分钟前
P1216 [IOI 1994] 数字三角形 Number Triangles
算法·动态规划