rustgym/leetcode/
_78_subsets.rs

1struct 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}