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的值