Tencent 42and50- subconjunto leetcode78
Al igual que Tencent 42, revísalo de nuevo
Dado un conjunto de números de matriz entera sin elementos repetidos, devuelve todos los subconjuntos posibles (conjuntos de potencia) de la matriz.
Nota: El conjunto de soluciones no puede contener subconjuntos duplicados.
Ejemplo:
Entrada: nums = [1,2,3]
Salida:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2 ],
[]
]
Retroceso estándar
Según el método retrospectivo, la secuencia generada es
[]
[1]
[12]
[123]
[13]
[2]
[23]
[3]
- Una mirada es sin duda el tema de la retrospectiva,
- La operación de rastreo es el último elemento en la lista de eliminación.
- La operación de retroceso es después de recurrir la función original.
class Solution:
def helper(self,res,list_tmp,nums,index):
res.append(list_tmp[:])
for i in range(index,len(nums)):
list_tmp.append(nums[i])
self.helper(res,list_tmp,nums,i+1)
list_tmp.pop()#回溯操作,在递归原函数之后 或者写成list_tmp=list_tmp[:-1]
def subsets(self, nums: List[int]) -> List[List[int]]:
##一看无疑是回溯的题目,
##回溯操作是remove列表中最后一个元素
##回溯操作是在递归原函数之后
if len(nums)==0:return []
res=[]
list_tmp=[]
self.helper(res,list_tmp,nums,0)
return res