rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;

impl Solution {
    fn combination_sum3(k: i32, n: i32) -> Vec<Vec<i32>> {
        if k > 9 {
            return vec![];
        }
        let nums: Vec<i32> = (1..10).collect();
        let mut cur = vec![];
        let mut res = vec![];
        Self::dfs(0, n, &mut cur, &mut res, &nums, k as usize);
        res
    }
    fn dfs(
        start: usize,
        target: i32,
        cur: &mut Vec<i32>,
        all: &mut Vec<Vec<i32>>,
        nums: &[i32],
        n: usize,
    ) {
        if cur.len() == n {
            if target == 0 {
                all.push(cur.to_vec());
            }
        } else {
            if target > 0 && start < nums.len() {
                Self::dfs(start + 1, target, cur, all, nums, n);
                cur.push(nums[start]);
                Self::dfs(start + 1, target - nums[start], cur, all, nums, n);
                cur.pop();
            }
        }
    }
}

#[test]
fn test() {
    let k = 3;
    let n = 7;
    let res = vec_vec_i32![[1, 2, 4]];
    assert_eq!(Solution::combination_sum3(k, n), res);
    let k = 3;
    let n = 9;
    let mut res = vec_vec_i32![[1, 2, 6], [1, 3, 5], [2, 3, 4]];
    let mut ans = Solution::combination_sum3(k, n);
    res.sort_unstable();
    ans.sort_unstable();
    assert_eq!(ans, res);
}