目录
学习目标
- 93.复原IP地址
- 78.子集
- 90.子集II
学习内容
93.复原IP地址
93. 复原 IP 地址 - 力扣(LeetCode)https://leetcode.cn/problems/restore-ip-addresses/
class Solution:
def restoreIpAddresses(self, s: str) -> List[str]:
n = len(s)
res = []
tmp = []
if n<=3:return res
def dfs(i):
if len(tmp)>4:return
if i>=n:
if len(tmp)==4:
res.append(".".join(tmp))
return
if s[i]=="0":
tmp.append("0")
dfs(i+1)
tmp.pop()
else:
for j in range(i,n):
if int(s[i:j+1])>255:
break
else:
tmp.append(s[i:j+1])
dfs(j+1)
tmp.pop()
dfs(0)
return res
78.子集
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
n = len(nums)
res = []
def dfs(i,tmp):
if i==n:
res.append(tmp.copy())
return
dfs(i+1,tmp)
dfs(i+1,tmp+[nums[i]])
dfs(0,[])
return res
90.子集II
90. 子集 II - 力扣(LeetCode)https://leetcode.cn/problems/subsets-ii/
class Solution:
def subsetsWithDup(self, nums: List[int]) -> List[List[int]]:
n = len(nums)
nums.sort()
res = []
def dfs(i,tmp):
if i==n:
if tmp not in res:
res.append(tmp.copy())
return
dfs(i+1,tmp)
dfs(i+1,tmp+[nums[i]])
dfs(0,[])
return res
class Solution:
def subsetsWithDup(self, nums: List[int]) -> List[List[int]]:
n = len(nums)
nums.sort()
res = []
def dfs(i,tmp):
res.append(tmp.copy())
if i>=n:return
for j in range(i,n):
if j>i and nums[j]==nums[j-1]:
continue
dfs(j+1,tmp+[nums[j]])
dfs(0,[])
return res