zoukankan      html  css  js  c++  java
  • 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 int fic(int n)
     8     {
     9         int res=1;
    10         for(int i=1;i<=n;i++)
    11         {
    12             res=res*i;
    13         }
    14         return res;
    15     }
    16         
    17     
    18     public static String getPermutation(int n, int k) {
    19         int r=fic(n);
    20         if(k>r) return null;
    21         ArrayList<Integer> arr=new ArrayList<Integer>();
    22         for(int i=1;i<=n;i++)
    23         {
    24             arr.add(i);
    25         }
    26         
    27          //形成 1,2,3,4,5,6,7 的列表
    28         //
    29         
    30         
    31         k--;
    32         
    33        StringBuffer sbf=new StringBuffer();
    34         for(int i=n;i>=1;i--) //因为排列共有n个,所以我们不断从链表中删除一个,加入string中,最后一个直接加在最后面
    35         {
    36             r=r/i;  
    37             int t=k/r;//选择删除的位置
    38             sbf.append(arr.remove(t));
    39             k=k%r;
    40             
    41             
    42             
    43        
    44         }
    45        
    46         return sbf.toString();
    47         
    48     }
    49     public static void main(String args[])
    50     {
    51         
    52             System.out.println(getPermutation(2, 2));
    53         
    54         
    55         
    56     }
    57 }
  • 相关阅读:
    5. Redis持久化
    4.Redis客户端
    3.Redis高级功能
    2.Redis五种数据结构
    1.Redis简介
    32.Mysql Cluster
    suffix ACM-ICPC 2017 Asia Qingdao
    多层BFS
    我想和你们说说java和C++___C加加
    11073 最热门的K个搜索串
  • 原文地址:https://www.cnblogs.com/hansongjiang/p/3973545.html
Copyright © 2011-2022 走看看