即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

Leetcode 60. Permutation Sequence

编程语言 u011438605 11℃ 0评论

//输出第k个全排列


public class Main {

 public static void main(String[] args) throws Exception {
  System.out.println(getPermutation(4, 7));
 }
  
 public static String getPermutation(int n, int k) {
        StringBuffer input = new StringBuffer();
        String result = "";
        for(int i = 1;i<=n;i++){       //将输入的一个数字n转换为12...n的字符串
         char temp = (char)(i+48);
         input.append(temp);
        }
        while(n!=0){          //字符串首位字符在input中的位置为(k-1)/(n-1)!
         int index = (k-1)/fac(n-1);
         result = result+input.charAt(index);
         input.deleteCharAt(index);
         k = k%fac(n-1);         //更新k和n的值
         if(k == 0){
          k = fac(n-1);
         }
         n--;
        }
        return result;
    }
 
 public static int fac(int n){
  int result = 1;
  while(n>0){
   result = result * n;
   n--;
  }
  return result;
 }
 
}





转载请注明:CodingBlog » Leetcode 60. Permutation Sequence

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情