leetcode 60 第k個排列

2021-10-05 01:24:16 字數 839 閱讀 1117

題目

給出集合 [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

輸出: 「2314」

題目分析

分析

對於n個數 ==> n! 個排列

因為要確定第k個數 ==> 從左往右根據位置確定排列數

比如n = 3 k = 3

第一位數為1 有兩個排列

所以k=3時候第乙個數肯定為2 ==> 減去排列個數2

剩餘的1,3找第乙個排列即1,3

所以第三個排列為213

解題思路 變數

作用f記錄第i個位置確定的時候其不同的排列的個數

過程

確定對於n位數第一位確定的時候其對應的排列的個數

k對f中的排列個數進行整除==>確定其第一位

更新k ==>確定下一位

class

solution

return res;}}

;

LeetCode60 第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輸出 23...

leetcode 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 ...

LeetCode 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 ...