思路:自认为想了一个还是比较精巧的方法,因为是只招一个,首先把所有的数字放入list中,取一个删一个。取数的规则为,k-1/每个数字控制的范围。
public class Solution {
public String getPermutation(int n, int k) {
int s=1;
List<Integer> list=new ArrayList<Integer>();
for (int i = 0; i <n; i++) {
list.add(i+1);
}
for (int i = 1; i <n; i++) {
s*=i;
}
int t=n-1;
StringBuffer answer=new StringBuffer();
for (;t!=0;) {
answer.append(list.get((k-1)/s));
list.remove((k-1)/s);
k-=((k-1)/s*s);
s/=t;
t--;
}
return answer.append(list.get(0)).toString();
}
}
耗时:260ms;中游水准,自信心受挫。。