zoukankan      html  css  js  c++  java
  • 算法:60.第k个排列

    解答参考:https://blog.csdn.net/lqcsp/article/details/23322951

    题目链接:https://leetcode-cn.com/problems/permutation-sequence/description/

    题目描述:

    代码见下:

    class Solution {
    public:
        string getPermutation(int n, int k) {
            vector<int> num(n, 0);  
          int perm_sum = 1;  
          for(size_t i = 0; i < n; ++i)  
          {  
            num[i] = i + 1;  
            perm_sum *= (i + 1);  
          }  
          string ret;  
          //因为数组是从0到n-1的 所以基数从 0到k-1  
          --k;  
          for(size_t i = 0; i < n; ++i)  
          {  
            perm_sum = perm_sum / (n - i);  
            int selected = k / perm_sum;  
            ret.push_back(num[selected] + '0');  
            //选择一个数后重新构造剩下的数组  
            for(size_t j = selected; j < n - i - 1; ++j)  
              num[j] = num[j + 1];  
            k = k % perm_sum;  
          }  
          return ret;  
        }
    };
  • 相关阅读:
    用户管理
    开机、重启、用户登录注销
    网络请求的封装
    Vuex
    Promise
    Vue Router(二)
    Vue Router(一)
    Vue CLI
    前端模块化-导入导出
    插槽
  • 原文地址:https://www.cnblogs.com/zf-blog/p/9116783.html
Copyright © 2011-2022 走看看