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 };
总结:几乎是用找规律算出来的,再次写,未必能流畅写下来。
"123"
"132"
"213"
"231"
"312"
"321"
原文地址:https://www.cnblogs.com/ayaoyao/p/9837535.html
时间: 2024-10-21 23:42:09