[JS] Subsets II

2022. 8. 28. 19:00

🔒 문제 (LeetCode 90)

Given an integer array nums that may contain duplicates, return all possible subsets (the power set).

The solution set must not contain duplicate subsets. Return the solution in any order.

Constraints:

  • 1 <= nums.length <= 10
  • -10 <= nums[i] <= 10

 

🌊 입출력

Example 1:

Input: nums = [1,2,2]
Output: [[],[1],[1,2],[1,2,2],[2],[2,2]]

Example 2:

Input: nums = [0]
Output: [[],[0]]

 


 

🔑 해결

🌌 알고리즘 - Backtracking (DFS)

/**
 * @param {number[]} nums
 * @return {number[][]}
 */
var subsetsWithDup = function(nums) {
    nums.sort((a, b) => a-b)
    const result = []
    
    const backTracking = (subset, arr) => {
        result.push([...subset])
        
        for(let i = 0; i < arr.length; i++) {
            if(i === 0 || arr[i] !== arr[i-1]) {
                subset.push(arr[i])
                backTracking(subset, arr.slice(i+1))
                subset.pop();
            }
        }
    }
    
    backTracking([], nums)
    
    return result
};

 

'코딩테스트 (JS) > DFS | BFS' 카테고리의 다른 글

[JS] Combination Sum  (0) 2022.08.31
[JS] Permutations II  (0) 2022.08.31
[JS] Subsets  (0) 2022.08.24
[JS] All Paths From Source to Target  (0) 2022.08.24
[JS] Shortest Path in Binary Matrix  (0) 2022.08.18

+ Recent posts