rustgym/leetcode/
_78_subsets.rs1struct Solution;
2
3impl Solution {
4 fn subsets(nums: Vec<i32>) -> Vec<Vec<i32>> {
5 let mut res: Vec<Vec<i32>> = vec![];
6 let mut v: Vec<i32> = vec![];
7 let n = nums.len();
8 Self::dfs(0, &mut res, &nums, &mut v, n);
9 res
10 }
11
12 fn dfs(i: usize, all: &mut Vec<Vec<i32>>, nums: &[i32], cur: &mut Vec<i32>, n: usize) {
13 if i == n {
14 all.push(cur.to_vec());
15 } else {
16 Self::dfs(i + 1, all, nums, cur, n);
17 cur.push(nums[i]);
18 Self::dfs(i + 1, all, nums, cur, n);
19 cur.pop();
20 }
21 }
22}
23
24#[test]
25fn test() {
26 let nums = vec![1, 2, 3];
27 let res = vec![
28 vec![],
29 vec![3],
30 vec![2],
31 vec![2, 3],
32 vec![1],
33 vec![1, 3],
34 vec![1, 2],
35 vec![1, 2, 3],
36 ];
37 assert_eq!(Solution::subsets(nums), res);
38}