2019年1月27日星期日

[LeetCode] 60. Permutation Sequence

有点想不明白,为什么要做 k = k - 1 ┑( ̄▽  ̄)┍
class Solution {
public String getPermutation(int n, int k) {
String chooseFrom = "123456789";
int[] factorial = new int[n + 1];
factorial[0] = 1;
factorial[1] = 1;
for (int i = 2; i <= n; i++) {
factorial[i] = factorial[i - 1] * i;
}
k = k - 1; // Why?
StringBuilder sb = new StringBuilder();
for (int i = n; i >= 1; i--) {
int x = k / factorial[i - 1];
k = k % factorial[i - 1];
sb.append(chooseFrom.charAt(x));
chooseFrom = chooseFrom.substring(0, x) + chooseFrom.substring(x + 1, chooseFrom.length());
}
return sb.toString();
}
}

没有评论:

发表评论