60 第k個排列 回溯法 數學法

2021-10-24 08:30:36 字數 1347 閱讀 7743

難度:中等

題目描述

解題思路

就是很正常的全排列,然後設定乙個計數字,如果count == k,就提前終止遞迴過程

/*

* 60. 第k個排列

對於n個數字,全排列一共有n!種可能

對於每個數字開頭,都有(n-1)!種可能,所以可能用k先除以(n-1)!,得到的數字就是第乙個數字是第幾個開頭

然後從所有數字裡刪掉這個已經選中的,繼續進行這個過程

//數學法找規律

public string getpermutation1

(int n,

int k)

stringbuilder sb =

newstringbuilder()

;--k;

//下標從0開始,所以要先減1

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