Leetcode #60 Permutation Sequence
2015-07-26 22:49
549 查看
The set
unique permutations.
By listing and labeling all of the permutations in order,
We get the following sequence (ie, for n = 3):
Given n and k, return the kth permutation sequence.
Note: Given n will be between 1 and 9 inclusive.
Difficulty: Medium
这题两个解法,第一个用nextPermutation,暴力算法,结果超时了。
第二个,通过一个巧妙地算法,比如第一位数的每个数的可能性为(n-1)!,通过一个sign[9]来记录每个数有没有用过,再通过(k-1)/(n-1)!来确定每一位是哪个数
解法一没通过就不上了
解法二:
[1,2,3,…,n]contains a total of n!
unique permutations.
By listing and labeling all of the permutations in order,
We get the following sequence (ie, for n = 3):
"123"
"132"
"213"
"231"
"312"
"321"
Given n and k, return the kth permutation sequence.
Note: Given n will be between 1 and 9 inclusive.
Difficulty: Medium
这题两个解法,第一个用nextPermutation,暴力算法,结果超时了。
第二个,通过一个巧妙地算法,比如第一位数的每个数的可能性为(n-1)!,通过一个sign[9]来记录每个数有没有用过,再通过(k-1)/(n-1)!来确定每一位是哪个数
解法一没通过就不上了
解法二:
int jc(int a) { if(a==0) return 1; int ans = 1; for(int i = 1;i<=a;i++) ans = ans * i; return ans; } string getPermutation(int n, int k) { string s; int sign[9] = {0}; int index, n1 = n; for(int i = 0;i<n1;i++) { index = (k-1)/jc(n-1); int j = 0; for(j = 0;j<n1;j++) { if(sign[j]==0) index--; if(index<0) break; } sign[j]++; s.push_back(j+'0'+1); k = k%jc(n-1); if(k ==0) k = jc(n-1); n--; } return s; }
相关文章推荐
- MarqueeTextview(跑马灯)
- UIScrollView的属性总结
- UI___UIImageView
- php中break与continue的区别
- CDOJ 485 UESTC 485 Game (八数码变形,映射,逆cantor展开)
- UGUI下拉列表控件
- UICollectionView详解5:瀑布流
- iOS UI异步更新:dispatch_async 与 dispatch_get_global_queue 的使用方法
- iOS中的基本 UI 控件的使用
- UIButton之ImageEdge&TitleEdge笔记
- UIPickerView
- CDOJ 490 UESTC 490 Swap Game(思路,逆序对)
- EasyUI总结
- MIUI 7 会是小米的救命稻草吗?
- DirectUI界面编程(五)WindowImplBase的使用
- DirectUI界面编程(五)WindowImplBase的使用
- DirectUI界面编程(五)WindowImplBase的使用
- POJ2299 Ultra-QuickSort(逆序数问题,树状数组求解)
- the-target-overrides-the-other-ldflags-build-setting-defined-in-pods-pods
- 《极客学院 --NSAttributedString 使用详解-4-UITextKit 简介》学习笔记(待处理)