60. 第k个排列

心得:使用字符串的方法的时候一定要知道如下

错误:str.substring(a,b)

正确:str.substring(a,b)

这道题没有用巧妙的方法,主要使用了回溯,回溯一定要掌握啊

感觉还是不透彻啊

 1 class Solution {
 2       int index=0;
 3      String ss="";
 4     ArrayList<Integer> ans=null;
 5       public String getPermutation(int n, int k) {
 6             int[] nums=new int[n+1];
 7             rec(nums,k,"");
 8             return ss;
 9         }
10       public void rec(int[] nums,int k,String str)
11       {
12           if(str.length()==nums.length-1)
13           {
14               index++;
15           if(index==k)
16           {
17               ss=str;
18               return;
19           }
20           else
21               return;
22           }
23           if(index>k)
24               return;
25           for(int i=1;i<nums.length;i++)
26           {
27               if(nums[i]==1)
28                   continue;
29               str=str+i;
30               nums[i]=1;
31               rec(nums,k,str);
32                str=str.substring(0, str.length()-1);
33               nums[i]=0;
34           }
35       }
36 }

原文地址:https://www.cnblogs.com/pc-m/p/11074511.html

时间: 2024-10-02 19:05:28

60. 第k个排列的相关文章

[leetcode] 60. 第k个排列

60. 第k个排列 还是使用之前用过多次的nextPermutation方法...(几乎所有跟排列相关的题都是同一个题- -) class Solution { public String getPermutation(int n, int k) { int[] nums = new int[n]; for (int i = 1; i <= n; i++) { nums[i - 1] = i; } while (k > 1) { nextPermutation(nums); k--; } St

第k个排列

给定 n 和 k,求123..n组成的排列中的第 k 个排列. 注意事项 1 ≤ n ≤ 9 样例 对于 n = 3, 所有的排列如下: 123 132 213 231 312 321 如果 k = 4, 第4个排列为,231. 1 public class PaiLieK 2 { 3 public String getPermutation(int n, int k) 4 { 5 List<Integer> list = new ArrayList<>(); 6 List<

LeetCode 笔记21 生成第k个排列

题目是这样的: 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"

leetcode排列,求第k个排列

stl 中的下一个排列在写一遍忘了 写个1个多小时,使用递归写的,错误就在我使用一个list保存当前剩下的数,然后利用k/(n-1)!的阶乘就是删除的数字,但进过观察, 比如 list={1,2,3} 分成3组: 1  {2,3} 2 {1,3} 3 {1,2} 确定位于哪个组,然后确定位于哪个组的第几个nyoj 511. 求第3个排列   ,3%2=1,删除 list就是第3个数3,其实呢是第2个树2 ,所以   计算方法为 (k-1)/(n-1)! 另外一个对于下一组,k%(n-1)!也不行

UVA - 12335 Lexicographic Order (第k大排列)

Description A Lexicographic Order Input: Standard Input Output: Standard Output The alphabet of a certain alien language consists of n distinct symbols. The symbols are like the letters of English alphabet but their ordering is different. You want to

ligh1060(求字符串第k大排列)组合数学

题意:求给定字符串(有重复字符)第k大排列. 解法:先判断字符串的所有排列是否够k个.然后从左向右每一位每一位确定.简单的组合数学. 代码: /**************************************************** * author:xiefubao *******************************************************/ #pragma comment(linker, "/STACK:102400000,10240000

[Swift]LeetCode60. 第k个排列 | Permutation Sequence

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 for n = 3: "123" "132" "213" "231" "312" "321&

60. Permutation Sequence(求全排列的第k个排列)

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" "3

2015美团网 哈工大 第k个排列

leetcode 上的Permutation Sequence 下面是可执行代码 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 以1 开头 123,132,共2!个数 2 开头  213,231 3开头  312, 321 如果给你弟k个,能求出它位于以谁开头不?只要求出它位于第几个2!个,总体思路就是这个 2 3 import java.util.ArrayList; 4 5 public class Main { 6 //求N的阶乘 7 public static