60 第k個排列

2021-10-24 05:08:21 字數 1045 閱讀 5912

題目描述:

給出集合 [1,2,3,…,n],其所有元素共有 n! 種排列。

按大小順序列出所有排列情況,並一一標記,當 n = 3 時, 所有排列如下:

「123」

「132」

「213」

「231」

「312」

「321」

給定 n 和 k,返回第 k 個排列。

說明:

給定 n 的範圍是 [1, 9]。

給定 k 的範圍是[1, n!]。

示例 1:

輸入: n = 3, k = 3

輸出: 「213」

示例 2:

輸入: n = 4, k = 9

輸出: 「2314」

方法1:

主要思路:

(1)根據 k 的大小,模擬正常的人為的排序方式;

class

solution

return res;

} string getpermutation

(int n,

int k)

--k;

//初始的序列為第乙個

string res;

while

(n)//找出當前需要比較的階乘

int count=

multi

(n-1);

int i=k/count;

//找出當前需要壓入的字元

res+

=str[i]

; str.

erase

(str.

begin()

+i);

//去除已經使用過的字元

k=k%count;

//找出剩下的是第幾個

--n;

//減小數量

}return res;}}

;

60 第k個排列

給出集合 1,2,3,n 其所有元素共有 n 種排列。按大小順序列出所有排列情況,並一一標記,當 n 3 時,所有排列如下 123 132 213 231 312 321 給定 n 和 k,返回第 k 個排列。說明 示例 1 輸入 n 3,k 3 輸出 213 示例 2 輸入 n 4,k 9 輸出 ...

60 第k個排列

給出集合 1,2,3,n 其所有元素共有 n 種排列。按大小順序列出所有排列情況,並一一標記,當n 3時,所有排列如下 123 132 213 231 312 321 給定n和k,返回第k個排列。說明 輸入 n 3,k 3 輸出 213 輸入 n 4,k 9 輸出 2314 class soluti...

60 第k個排列

給出集合 1,2,3,n 其所有元素共有 n 種排列。按大小順序列出所有排列情況,並一一標記,當 n 3 時,所有排列如下 123 132 213 231 312 321 給定 n 和 k,返回第 k 個排列。說明 給定 n 的範圍是 1,9 給定 k 的範圍是 1,n 示例 1 輸入 n 3,k ...