Fancy DSA Fancy DSA
数据结构
算法
LeetCode
  • 关于
  • 导航 (opens new window)
  • 分类
  • 标签
  • 归档
设计模式 (opens new window)
博客 (opens new window)
GitHub (opens new window)

Jonsam NG

想的更多,也要想的更远
数据结构
算法
LeetCode
  • 关于
  • 导航 (opens new window)
  • 分类
  • 标签
  • 归档
设计模式 (opens new window)
博客 (opens new window)
GitHub (opens new window)
  • 开始上手
  • Plan 计划
  • Roadmap 路线
  • 算法简介
  • Sort 排序

  • Search 搜索

  • Recursive 递归

  • Graph 图

  • Tree 树

  • Math 数学

  • Hash 哈希

  • String 字符串

  • BitManipulation 位操纵

  • Backtracking 回溯

    • AllCombinationsOfSizeK [全组合]
    • GeneratePermutations [排列]
      • 排列与组合
      • 实现
      • 参考
    • KnightTour [骑士巡逻]
    • NQueens [N皇后问题]
    • RatInAMaze [迷宫之鼠]
    • Sudoku [数独]
    • SumOfSubset [子集之和]
  • DynamicProgramming 动态规划

  • Cache 缓存

  • Array 数组

  • Ciphers 密码学

  • Conversions 转换

  • ProjectEuler 欧拉计划

  • 其他

  • 算法
  • Backtracking 回溯
jonsam
2022-09-26
目录

GeneratePermutations [排列]

# 排列与组合

排列和组合(permutations and combinations),是指从一个集合中选择对象的各种方式,一般不替换(replacement),以形成子集。当选择的顺序是一个元素时,这种子集的选择被称为排列,当顺序不是一个元素时,被称为组合。

# 实现

# JavaScript

/*
 * Problem Statement: Generate all distinct permutations of a an array (all permutations should be in sorted order);
 *
 * What is permutations?
 * - Permutation means possible arrangements in a set (here it is an array);
 *
 * Reference to know more about permutations:
 * - https://www.britannica.com/science/permutation
 *
 */

const swap = (arr, i, j) => {
  const newArray = [...arr];

  [newArray[i], newArray[j]] = [newArray[j], newArray[i]] // Swapping elements ES6 way

  return newArray
}

const permutations = arr => {
  const P = []
  const permute = (arr, low, high) => {
    if (low === high) {
      P.push([...arr])
      return P
    }
    for (let i = low; i <= high; i++) {
      arr = swap(arr, low, i)
      permute(arr, low + 1, high)
    }
    return P
  }
  return permute(arr, 0, arr.length - 1)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

# 参考

  • permutations and combinations | Description, Examples, & Formula | Britannica (opens new window)
编辑 (opens new window)
上次更新: 2022/10/22, 22:03:41
AllCombinationsOfSizeK [全组合]
KnightTour [骑士巡逻]

← AllCombinationsOfSizeK [全组合] KnightTour [骑士巡逻]→

最近更新
01
0-20题解
10-31
02
本章导读
10-31
03
算法与转换:Part1
10-28
更多文章>
Theme by Vdoing | Copyright © 2022-2022 Fancy DSA | Made by Jonsam by ❤
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式