#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)
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();
}
}
}