算法第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
        
        
相关推荐
小王不爱笑1324 分钟前
Spring 基础核心
java
lsx20240610 分钟前
Rust 迭代器
开发语言
心勤则明13 分钟前
用 Spring AI Alibaba 打造智能查询增强引擎
java·人工智能·spring
Arva .14 分钟前
Spring 的三级缓存,两级够吗
java·spring·缓存
阿贵---17 分钟前
C++中的备忘录模式
开发语言·c++·算法
房开民21 分钟前
paddle 文本检测识别模型转为onnx
开发语言·r语言·paddle
setmoon21432 分钟前
C++中的观察者模式实战
开发语言·c++·算法
2403_8355684734 分钟前
C++代码规范化工具
开发语言·c++·算法
爱喝一杯白开水34 分钟前
Java 定时任务完全指南
java
毕设源码-郭学长39 分钟前
【开题答辩全过程】以 高校自动排课系统的设计与实现为例,包含答辩的问题和答案
java