LeetCode-60-Permutation Sequence(找规律)-Medium
2016-03-04 09:07
381 查看
题意理解:
将0-n按照从小到大的顺序进行全排序,求解第k个排列结果
题目分析:
穷举会超时,找规律,
1)第k个排列的第一个元素在0-n中的位置为(k-1)/(n-1)!
2)在剩下的元素中继续找第一个;
3)依此类推;
在Java中使用String一直会超时,最终使用StringBuilder;
解题代码:
将0-n按照从小到大的顺序进行全排序,求解第k个排列结果
题目分析:
穷举会超时,找规律,
1)第k个排列的第一个元素在0-n中的位置为(k-1)/(n-1)!
2)在剩下的元素中继续找第一个;
3)依此类推;
在Java中使用String一直会超时,最终使用StringBuilder;
解题代码:
public class Solution { private int calFactorial(int n){ int ans=1; for(int i=1;i<=n;i++){ ans*=i; } return ans; } public String getPermutation(int n, int k) { StringBuilder ans=new StringBuilder(""); int num=k; StringBuilder s=new StringBuilder(""); int factorial=calFactorial(n); for(int i=1;i<=n;i++){ s.append(i); } for(int i=n;i>=1;i--){ factorial/=i; int index=(num-1)/factorial; String tmp=""+s.charAt(index); ans.append(tmp); num-=index*factorial; s=s.deleteCharAt(index); } return ans.toString(); } }
相关文章推荐
- 自定义UITabBarController标签视图控制器
- 自定义UITabBarController标签视图控制器
- 获取手机唯一标识符(UUID+KeyChain)
- HDU 4632 Palindrome subsequence(区间DP)
- HDU 4632 Palindrome subsequence(区间DP)
- DDOS--DNS Query Flood
- ueditor 1.4.3.2 独立/单独 上传图片框原理
- NGUI研究院之三种方式监听NGUI的事件方法
- 初次接触vue
- Vision GUI programming products
- Installation of Torque/Maui for a Beowulf Cluster
- RHEL Installation Guide
- torque 简介
- UIStackView
- The GNU build system体验教程:Hello world example with Autoconf and Automake
- UVA 787 Maximum Sub-sequence Product
- uitableView行高自定义
- [UVA 11324]The Largest Clique[SCC][缩点]
- CF 632D(Longest Subsequence-计数排序)
- (非常重要)如何正确理解PHP之include,require等包含作用域