60 第k個排列(leetcode)

2021-08-20 13:04:07 字數 1134 閱讀 4921

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

對於全排列的題目前看到三道,1、全排列;2、下乙個排列;3、第k個排列;

三道題的解題方法一致,就是輸出的結果不同而已,要想找下乙個排列經過三個步驟:1、從後往前找最大的值並記錄索引值index;2、從後往前找比index-1對應值最大且最小的值並交換;3、將包含index之後的值從小到大排序;

這道題要找第k個,那麼就用乙個變數計數就行流;返回值是字串,自己再做進一步處理;細節見**:

class solution 

}string getpermutation(int n, int k)

int i = 1;

while (i < k)

//小大

int right_new = nums.size() - 1;

while (right_new >= right)

else

}//交換

int temp = nums[right - 1];

nums[right - 1] = nums[right_new];

nums[right_new] = temp;

//排序

swap_sort(nums, right, nums.size() - 1);

i++;

}string result = "";

for (int j = 0; j < nums.size(); j++)

return result;

}};

加油吧各位,這是面試常考題;

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