算法第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
        
        
相关推荐
地平线开发者5 小时前
J6B vio scenario sample
算法
Flittly12 小时前
【AgentScope Java新手村系列】(16)从RAG到多路检索
java·spring boot·spring
小兔崽子去哪了12 小时前
Java 生成二维码解决方案
java·后端
BothSavage17 小时前
Trae远程开发中DeepSeek自定义模型4054错误的排查与修复
算法
小林ixn17 小时前
从暴力到KMP:一道题彻底搞懂字符串匹配的前世今生
算法
人活一口气17 小时前
从JVM调优到MCP协议:Java全栈技术体系深度总结与企业级架构实践
java·spring boot
烬羽18 小时前
字符串算法入门:从反转字符串到回文判断,面试不再慌
算法·面试
NE_STOP19 小时前
Vibe Coding -- 完整项目案例实操
java
荣码19 小时前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python