Skip to main content
Back to problems
#90
Medium Algorithms

Subsets ii

Array Backtracking Bit Manipulation
60.9% acceptance
Jan 12, 2026
10864
408
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.

Solution

Rust
Time O(n log n)
Space O(n)
LeetCode
solution.rs
impl Solution {
  pub fn subsets_with_dup(mut nums: Vec<i32>) -> Vec<Vec<i32>> {
    nums.sort();
    let mut result = Vec::new();
    let mut current = Vec::new();
    Self::backtrack(&nums, 0, &mut current, &mut result);
    result
  }
  
  fn backtrack(nums: &[i32], start: usize, current: &mut Vec<i32>, result: &mut Vec<Vec<i32>>) {
    result.push(current.clone());
    
    for i in start..nums.len() {
      if i > start && nums[i] == nums[i-1] {
        continue;
      }
      current.push(nums[i]);
      Self::backtrack(nums, i + 1, current, result);
      current.pop();
    }
  }
}