温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

LeetCode如何解决组合问题

发布时间:2021-12-15 13:41:06 来源:亿速云 阅读:172 作者:小新 栏目:大数据

这篇文章主要介绍LeetCode如何解决组合问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

题目

给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。

示例:
输入: n = 4, k = 2 输出: [   [2,4],   [3,4],   [2,3],   [1,2],   [1,3],   [1,4], ]
代码
class Solution {     List<Integer> temp = new ArrayList<Integer>();     List<List<Integer>> ans = new ArrayList<List<Integer>>();     public List<List<Integer>> combine(int n, int k) {         dfs(1, n, k);         return ans;     }     public void dfs(int cur, int n, int k) {         // 剪枝:temp 长度加上区间 [cur, n] 的长度小于 k,不可能构造出长度为 k 的 temp         if (temp.size() + (n - cur + 1) < k) {             return;         }         // 记录合法的答案         if (temp.size() == k) {             ans.add(new ArrayList<Integer>(temp));             return;         }         // 考虑选择当前位置         temp.add(cur);         dfs(cur + 1, n, k);         temp.remove(temp.size() - 1);         // 考虑不选择当前位置         dfs(cur + 1, n, k);     } }


以上是“LeetCode如何解决组合问题”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI