60. Permutation Sequence
来源:互联网 发布:微水试验数据 编辑:程序博客网 时间:2024/06/07 08:14
1、题目描述
输入整数n和k,返回第k个n的全排列。
2、思路
可以用递归的思路。先确定第一个数字是多少,再依次确定剩下的n-1个数字。
k先减1,换成0 base的。声明由1-n组成的数组v。
设n-1个数的全排列总数为num,则(k/num)可以确定第k个全排列在第几组,也就是第一个数应该是v的第(k/num)个元素;
(k%num)是新的k,v是排除了之前的元素形成的新数组;
依次类推求出后面的每一位数字。结束递归的的条件是v中只剩一个元素,则把这个元素加在最后即可。
3、代码
string getPermutation(int n, int k) { vector<int>v; for(int i=1;i<=n;i++) v.push_back(i); return getans(v,k-1); } string getans(vector<int>v,int k){ int n = v.size(); if(n==1) { char c = char(v[0]+'0'); string s=""; s+=c; return s; } int num = 1; for(int i=1;i<n;i++) num*=i; int a = k / num;//di a zu int b = k % num;//di b ge char c= v[a]+'0'; vector<int>v1; for(int i=0;i<n;i++){ if(i!=a) v1.push_back(v[i]); } string ans = c +getans(v1,b); return ans; }
阅读全文
0 0
- LeetCode --- 60. Permutation Sequence
- [Leetcode] 60. Permutation Sequence
- [leetcode] 60.Permutation Sequence
- 60. Permutation Sequence
- 60. Permutation Sequence
- **LeetCode 60. Permutation Sequence
- leetcode 60. Permutation Sequence
- 60. Permutation Sequence
- 60. Permutation Sequence
- 60. Permutation Sequence
- 60. Permutation Sequence
- 60. Permutation Sequence
- [LeetCode]60. Permutation Sequence
- LeetCode *** 60. Permutation Sequence
- 60. Permutation Sequence
- LeetCode 60. Permutation Sequence
- hiho 60. Permutation Sequence
- leetcode 60. Permutation Sequence
- BZOJ1452 [JSOI2009]Count 【树套树 (树状数组)】
- transwarp Slipstream 简介之权限管理
- MYSQL 递归获取 子节点
- MySQL 误操作 (update,delete忘加where条件)
- C++项目中的extern "C" {}
- 60. Permutation Sequence
- SVG之旅:SVG简介
- python之pandas库
- struts2基本流程与配置
- 今日头条一轮游
- maven的基础知识
- ionic滚动条 左右滑动上拉刷新
- 用Java操作LDAP案例
- Linux Shell编程