Dsa Recursion All Subsets
DodaTech
1 min read
In this tutorial, you'll learn about How to Fix Recursive Subsets Errors. We cover key concepts, practical examples, and best practices.
Fix recursive subsets errors when result list shared reference causing all subsets to be same list.
Quick Fix
Wrong
def subsets(n):
res=[]
def dfs(i,cur):
if i==len(n): res.append(cur); return
dfs(i+1,cur)
cur.append(n[i]); dfs(i+1,cur); cur.pop()
dfs(0,[])
return res
res.append(cur) appends reference, not copy. All entries become empty list after backtracking.
Right
def subsets(n):
res=[]
def dfs(i,cur):
if i==len(n): res.append(cur.copy()); return
dfs(i+1,cur)
cur.append(n[i]); dfs(i+1,cur); cur.pop()
dfs(0,[])
return res
[1,2,3] -> [[],[3],[2],[2,3],[1],[1,3],[1,2],[1,2,3]]. O(2^n).
Prevention
Copy cur before adding to result. Recursion explores include/exclude for each element.
DodaTech Tools
Doda Browser's algorithm visualizer steps through DSA operations line by line. DodaZIP archives implementation patterns for team sharing. Durga Antivirus Pro detects memory corruption patterns in algorithm implementations.
FAQ
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro