本文共 1049 字,大约阅读时间需要 3 分钟。
要解决的问题是生成1到n中所有可能的k个数的组合。这种问题可以通过递归和深度优先搜索(DFS)来实现,确保每个组合都是唯一的且不考虑顺序。
解决思路:
代码实现:
import java.util.ArrayList;import java.util.Deque;import java.util.List;import java.util.ArrayDeque;public class Solution { public List
> combine(int n, int k) { List
> res = new ArrayList<>(); if (k <= 0 || k > n) { return res; } Deque path = new ArrayDeque<>(); dfs(n, k, 1, path, res); return res; } private void dfs(int n, int k, int begin, Deque path, List
> res) { if (path.size() == k) { res.add(new ArrayList<>(path)); return; } for (int i = begin; i <= n; i++) { path.addLast(i); dfs(n, k, i + 1, path, res); path.removeLast(); } }}
代码解释:
通过这种方法,可以高效地生成所有k元素的组合,确保每个组合都是唯一且按升序排列。
转载地址:http://uper.baihongyu.com/