这里 k - 1 和 --k 的区别,实在不明白

Mor*_*rty 1 java

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

爪哇。在最后第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]]

这是 Leetcode 77。 组合

小智 5

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

k = k-1;

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