class Solution {
    public List<List<Integer>> combine(int n, int k) {
        List<List<Integer>> res = new ArrayList<>();
        if (n == 0) {
            return res;
        }
        List<Integer> cur = new ArrayList<>();
        helper(res, cur, n, k, 1);
        return res;
    }
    private void helper (List<List<Integer>> res, List<Integer> cur, int n, int k, int start) {
        if (k == 0) {
            res.add(new ArrayList<>(cur));
            return;
        }
        for (int i = start; i <= n; i++) {
            cur.add(i);
            helper(res, cur, n, k - 1, i + 1); // helper(res, cur, n, --k, i + 1)
            cur.remove(cur.size() - 1);
        }
    }
}


Java。在最后一行5中,当我将“ k-1”更改为“ --k”时,结果将有所不同,有人可以帮我吗?我认为它们是相同的,但结果不同。

“ helper(res,cur,n,k-1,i + 1);”的结果:[[1、2],[1、3],[1、4],[2、3],[2、4],[3、4]]

“ helper(res,cur,n,--k,i + 1)”的结果:[[1,2],[2]]

是Leetcode77。组合

最佳答案

当您执行--k时,它将更新k的值。它类似于


  k = k-1;


那么您将发送更新的k值。
当您仅发送值k-1时,它不会更新该值。它只是传递k-1的值

09-10 02:24
查看更多