写一个关于全排列,全组合的函数

本文阅读 1 分钟
首页 知识库 正文

全排列

  1. /**
  2. * @param {number[]} nums
  3. * @return {number[][]}
  4. */
  5. var permute = function (nums) {
  6. let result = [];
  7. let used = Array.from({ length: nums.length }).fill(false);
  8. function search(collection, used) {
  9. if (collection.length === nums.length) {
  10. result.push(collection);
  11. return;
  12. }
  13. for (let i = 0; i < nums.length; i++) {
  14. if (used[i] === false) {
  15. used[i] = true;
  16. search(collection.concat(nums[i]), used.slice(0));
  17. used[i] = false; // 重置状态
  18. }
  19. }
  20. collection = null;
  21. used = null;
  22. }
  23. search([], used);
  24. return result;
  25. };

全组合: 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。

  1. var combine = function (n, k) {
  2. let result = [];
  3. function find(collection, from) {
  4. if (collection.length === k) {
  5. result.push(collection);
  6. return;
  7. }
  8. for (let i = from; i <= n; i++) {
  9. find(collection.concat(i), i + 1);
  10. }
  11. }
  12. find([], 1);
  13. return result;
  14. };
解压密码: detechn或detechn.com

免责声明

本站所有资源出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。

本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户自行鉴别,做一个有主见和判断力的用户。

本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。

如何在数组中找出三个数之和为 N
« 上一篇 05-28
大数乘法和大数加法
下一篇 » 05-28

发表评论

惪特博客
  • 文章总数:
    18497 篇
  • 评论总数:
    53330 条
  • 标签总数:
    8873 个
  • 总浏览量:
    22817174 次
  • 最后更新:
    3月27日

最多点赞

随便看看

标签TAG