算法第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
        
        
相关推荐
宝贝儿好2 分钟前
【LLM】第一章:分词算法BPE、WordPiece、Unigram、分词工具jieba
人工智能·python·深度学习·神经网络·算法·语言模型·自然语言处理
渡我白衣3 分钟前
运筹帷幄——在线学习与实时预测系统
人工智能·深度学习·神经网络·学习·算法·机器学习·caffe
好家伙VCC3 分钟前
**InfluxDB实战进阶:基于Golang的高性能时序数据采集与可视化方
java·开发语言·后端·python·golang
yu85939584 分钟前
WinForm 嵌入 WordExcel 实现方案
开发语言·microsoft·c#
斌味代码4 分钟前
Java SpringBoot 微服务实战:企业级架构设计与性能调优完全指南
java·spring boot·微服务
colus_SEU4 分钟前
SVM 的终极视角:合页损失函数 (Hinge Loss) 与正则化
算法·机器学习·支持向量机
好家伙VCC5 分钟前
**发散创新:基于Go语言的服务网格实践与流量治理实战**在微服务架构日益复杂的今天,**服务网格(S
java·python·微服务·架构·golang
汀、人工智能5 分钟前
[特殊字符] 第71课:爬楼梯
数据结构·算法·数据库架构·图论·bfs·爬楼梯
沐知全栈开发6 分钟前
SQLite 常用函数
开发语言
MicroTech20256 分钟前
微算法科技(NASDAQ :MLGO)量子启发式算法与CNN、Transformer结合,实现端到端彩色图像分割
科技·算法·启发式算法