impl Solution {
fn dfs(nums: &Vec<i32>, i: usize, res: &mut Vec<Vec<i32>>, list: &mut Vec<i32>) {
if i == nums.len() {
res.push(list.clone());
return;
}
list.push(nums[i]);
Self::dfs(nums, i + 1, res, list);
list.pop();
Self::dfs(nums, i + 1, res, list);
}
pub fn subsets(nums: Vec<i32>) -> Vec<Vec<i32>> {
let mut res = vec![];
Self::dfs(&nums, 0, &mut res, &mut vec![]);
res
}
}