当前位置:   article > 正文

C语言 | Leetcode C语言题解之第60题排列序列

C语言 | Leetcode C语言题解之第60题排列序列

题目:

题解:

  1. char* getPermutation(int n, int k) {
  2. int factorial[n];
  3. factorial[0] = 1;
  4. for (int i = 1; i < n; ++i) {
  5. factorial[i] = factorial[i - 1] * i;
  6. }
  7. --k;
  8. char* ans = malloc(n + 1);
  9. ans[n] = '\0';
  10. int valid[n + 1];
  11. for (int i = 0; i <= n; ++i) {
  12. valid[i] = 1;
  13. }
  14. for (int i = 1; i <= n; ++i) {
  15. int order = k / factorial[n - i] + 1;
  16. for (int j = 1; j <= n; ++j) {
  17. order -= valid[j];
  18. if (!order) {
  19. ans[i - 1] = j + '0';
  20. valid[j] = 0;
  21. break;
  22. }
  23. }
  24. k %= factorial[n - i];
  25. }
  26. return ans;
  27. }
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号