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。 组合