1. 程式人生 > >LEETCODE60——第K個排列

LEETCODE60——第K個排列

col tco class leet etc int ret urn 總結

 1 class Solution {
 2 public:
 3     string getPermutation(int n, int k) {
 4         string ans(n, 0);
 5         vector<bool> flag(n, false);
 6         int count = 1;
 7         for (int i = 1; i < n; i++)
 8             count *= i;
 9         int m;
10         int m_f;
11         int index = 0
; 12 k = k - 1; 13 while (index <n-1) 14 { 15 m = k / count; 16 m_f = 0; 17 for (int i = 0; i <= m; i++, m_f++) 18 { 19 while (flag[m_f]) 20 m_f++; 21 } 22 m_f--; 23 flag[m_f] = true
; 24 ans[index] = m_f + 1+ 0; 25 index++; 26 k = k % count; 27 count = count / (n - index ); 28 } 29 int i = 0; 30 while (flag[i]) 31 i++; 32 ans[n - 1] = i + 1 + 0; 33 return ans; 34 35 36
} 37 };

總結:幾乎是用找規律算出來的,再次寫,未必能流暢寫下來。

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

LEETCODE60——第K個排列