From 9597f20304ba263e9da342bba5cbb061df58891c Mon Sep 17 00:00:00 2001 From: Srihari Date: Tue, 31 Mar 2026 19:43:37 +0530 Subject: [PATCH] update js solution/subsets-ii --- articles/subsets-ii.md | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/articles/subsets-ii.md b/articles/subsets-ii.md index 5a7589f85..c4290a48a 100644 --- a/articles/subsets-ii.md +++ b/articles/subsets-ii.md @@ -409,29 +409,27 @@ class Solution { * @return {number[][]} */ subsetsWithDup(nums) { - const res = []; + let res = []; nums.sort((a, b) => a - b); - this.backtrack(0, [], nums, res); - return res; - } - /** - * @param {number} start - * @param {number[]} subset - * @param {number[]} nums - * @param {number[][]} res - * @return {void} - */ - backtrack(start, subset, nums, res) { - res.push([...subset]); - for (let i = start; i < nums.length; i++) { - if (i > start && nums[i] === nums[i - 1]) { - continue; + const backtrack = (i, subset) => { + if (i === nums.length) { + res.push([...subset]); + return; } + subset.push(nums[i]); - this.backtrack(i + 1, subset, nums, res); + backtrack(i + 1, subset); subset.pop(); - } + + while (i + 1 < nums.length && nums[i] === nums[i + 1]) { + i++; + } + backtrack(i + 1, subset); + }; + + backtrack(0, []); + return res; } } ```