Given an integer array nums
of unique elements, return all possible subsets (the power set).
The solution set must not contain duplicate subsets. Return the solution in any order.
Example 1:
Input: nums = [1,2,3] Output: [[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
Example 2:
Input: nums = [0] Output: [[],[0]]
Constraints:
1 <= nums.length <= 10
-10 <= nums[i] <= 10
nums
are unique.struct Solution;
impl Solution {
fn subsets(nums: Vec<i32>) -> Vec<Vec<i32>> {
let mut res: Vec<Vec<i32>> = vec![];
let mut v: Vec<i32> = vec![];
let n = nums.len();
Self::dfs(0, &mut res, &nums, &mut v, n);
res
}
fn dfs(i: usize, all: &mut Vec<Vec<i32>>, nums: &[i32], cur: &mut Vec<i32>, n: usize) {
if i == n {
all.push(cur.to_vec());
} else {
Self::dfs(i + 1, all, nums, cur, n);
cur.push(nums[i]);
Self::dfs(i + 1, all, nums, cur, n);
cur.pop();
}
}
}
#[test]
fn test() {
let nums = vec![1, 2, 3];
let res = vec![
vec![],
vec![3],
vec![2],
vec![2, 3],
vec![1],
vec![1, 3],
vec![1, 2],
vec![1, 2, 3],
];
assert_eq!(Solution::subsets(nums), res);
}