Skip to content

60. 排列序列 #68

Description

@buuing

给出集合 [1,2,3,...,n],其所有元素共有 n! 种排列。

按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:

  1. "123"
  2. "132"
  3. "213"
  4. "231"
  5. "312"
  6. "321"

给定 n 和 k,返回第 k 个排列。

示例 1:

输入:n = 3, k = 3
输出:"213"

示例 2:

输入:n = 4, k = 9
输出:"2314"

示例 3:

输入:n = 3, k = 1
输出:"123"

提示:

  • 1 <= n <= 9
  • 1 <= k <= n!

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/permutation-sequence
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。




  • 数学规律求解
constgetPermutation=(n,k)=>{constnums=newArray(n).fill().map((_,i)=>i+1)consttotalArr=[0,1]for(leti=2;i<=n;i++){totalArr[i]=totalArr[i-1]*i}lettotal=totalArr[n],res=''while(nums.length){constindex=Math.ceil(k/total*n)-1constnum=nums.splice(index,1)[0]res+=numk=k%(total/n)||(total/n)total=totalArr[--n]}returnres}

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions