[leetcode-60]Permutation Sequence(C)
来源:互联网 发布:知乎怎么做微信销售 编辑:程序博客网 时间:2024/06/05 19:00
问题描述:
The set [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.
分析:看到这道题,我突然想到了之前做的leetcode中next permutation的那题,结果我直接复制进来,然后居然ac了,只是耗时太长了(192ms)。既然选择出满足条件的耗时太长,那么只能是构造出满足条件的数据了。
代码如下:192ms
void reverse(int *nums,int start,int end){ int left = start; int right = end-1; int tmp; while(left<right){ tmp = nums[left]; nums[left] = nums[right]; nums[right] = tmp; left++; right--; }}void nextPermutation(int* nums, int numsSize) { if(numsSize<2) return; int i,j; for(i = numsSize-2;i>=0;i--){ if(nums[i]<nums[i+1]) break; } if(i<0){ reverse(nums,0,numsSize); return;0 } int min = nums[i+1]; int index = i+1; for(j = i+2;j<numsSize;j++){ if(nums[j]>nums[i]&&nums[j]<=min){ min = nums[j]; index = j; } } nums[index] = nums[i]; nums[i] = min; reverse(nums,i+1,numsSize);}char* getPermutation(int n, int k) { int *nums = (int *)malloc(sizeof(int)*n); char *res = (char *)malloc(n+1); int i; for(i = 0;i<n;i++){ nums[i] = i+1; } for(i = 1;i<k;i++){ nextPermutation(nums,n); } res[n] = '\0'; for(i = 0;i<n;i++) res[i] = nums[i]+'0'; return res;}
0 0
- [leetcode-60]Permutation Sequence(C)
- [leetcode-60]Permutation Sequence(C)
- LeetCode(60): Permutation Sequence (C++)
- LeetCode 60: Permutation Sequence
- [leetcode 60] Permutation Sequence
- leetcode || 60、Permutation Sequence
- leetcode 60:Permutation Sequence
- LeetCode(60) Permutation Sequence
- Leetcode #60 Permutation Sequence
- leetcode 60: Permutation Sequence
- Leetcode#60||Permutation Sequence
- [Leetcode]#60 Permutation Sequence
- leetcode 60:Permutation Sequence
- 【leetcode】【60】Permutation Sequence
- LeetCode 60 - Permutation Sequence
- LeetCode 60: Permutation Sequence
- LeetCode 60 Permutation Sequence
- 【Leetcode】Permutation Sequence(60)
- 多线程处理mysql数据
- hdu 5348 MZL's endless loop dfs
- 【java】--多线程原理
- 新浪微博简记
- c语言常见函数
- [leetcode-60]Permutation Sequence(C)
- OC/iOS获取随机数
- Lua中,泛型for循环遍历table时,ipairs和pairs的区别
- ScaleAnimation 缩放动画效果
- 最长回文自负串1 求长度
- Linux时间子系统之一:clock source(时钟源)
- 在画布上实现正弦曲线和文字的绘制
- JavaScript常用表单验证
- Day8.04