DSA_Tutorials / problems /subsets.html
Json026's picture
Create problems/subsets.html
69fca97 verified
<!DOCTYPE html>
<html lang="en" class="dark">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, initial-scale=1.0">
<title>Subsets | DSA Portfolio</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="../assets/style.css">
<link rel="preconnect"
href="https://fonts.googleapis.com">
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;700;800&family=JetBrains+Mono:wght@400;500&display=swap"
rel="stylesheet">
</head>
<body class="bg-slate-950 text-white font-inter">
<!-- Header -->
<header class="border-b border-white/10">
<div class="max-w-7xl mx-auto px-6 py-5">
<a href="../index.html"
class="text-cyan-400">
← Back to Portfolio
</a>
</div>
</header>
<!-- Main -->
<main class="max-w-7xl mx-auto px-6 py-16 grid lg:grid-cols-3 gap-10">
<!-- Content -->
<section class="lg:col-span-2">
<p class="text-cyan-400 font-mono">
Recursion / Backtracking
</p>
<h1 class="text-5xl font-black mt-4">
Subsets
</h1>
<p class="text-slate-400 mt-6 text-lg">
Generate all possible subsets of a given array using recursion and backtracking.
</p>
<!-- Intuition -->
<div class="mt-14">
<h2 class="text-3xl font-bold">
Intuition
</h2>
<p class="text-slate-300 mt-5 leading-8">
For every element we have two choices:
either include it in the subset or exclude it.
This naturally forms a recursion tree.
</p>
</div>
<!-- Algorithm -->
<div class="mt-14">
<h2 class="text-3xl font-bold">
Algorithm
</h2>
<ol class="mt-5 space-y-3 text-slate-300 list-decimal list-inside">
<li>Start recursion from index 0</li>
<li>Include current element</li>
<li>Move to next index</li>
<li>Backtrack by removing element</li>
<li>Exclude current element</li>
</ol>
</div>
<!-- Dry Run -->
<div class="mt-14">
<h2 class="text-3xl font-bold">
Dry Run
</h2>
<div class="mt-5 p-6 rounded-2xl bg-white/5 border border-white/10 font-mono">
[] <br>
[1] <br>
[1,2] <br>
[2]
</div>
</div>
<!-- Code -->
<div class="mt-14">
<h2 class="text-3xl font-bold">
Python Solution
</h2>
<pre
class="mt-5 p-6 rounded-2xl bg-black overflow-x-auto border border-white/10 text-sm code-block">
<code>
class Solution:
def subsets(self, nums):
ans = []
def backtrack(i, curr):
if i == len(nums):
ans.append(curr[:])
return
curr.append(nums[i])
backtrack(i + 1, curr)
curr.pop()
backtrack(i + 1, curr)
backtrack(0, [])
return ans
</code>
</pre>
</div>
</section>
<!-- Sidebar -->
<aside>
<div class="sticky top-10 p-6 rounded-3xl bg-white/5 border border-white/10">
<h2 class="text-2xl font-bold">
Problem Info
</h2>
<div class="mt-8 space-y-5">
<div>
<p class="text-slate-400 text-sm">
Difficulty
</p>
<p class="text-yellow-400 font-semibold">
Medium
</p>
</div>
<div>
<p class="text-slate-400 text-sm">
Topic
</p>
<p>
Recursion
</p>
</div>
<div>
<p class="text-slate-400 text-sm">
Time Complexity
</p>
<p>
O(2^n)
</p>
</div>
<div>
<p class="text-slate-400 text-sm">
Space Complexity
</p>
<p>
O(n)
</p>
</div>
<div>
<p class="text-slate-400 text-sm">
Platform
</p>
<p>
LeetCode
</p>
</div>
<div>
<p class="text-slate-400 text-sm">
Date Solved
</p>
<p>
2026-05-08
</p>
</div>
</div>
</div>
</aside>
</main>
</body>
</html>