Last day: Ferragamo handbag on sale 50%# Fashion - 美丽时尚
c*p
1 楼
leetcode permutation sequence
先谢谢各位大牛!
我知道这个问题有更好的解法,但我想知道:
我想把第k个permutation存在result中, 无论我result是否设为全局的,它都存不下。
当时读到的时候,有存进去,可是接着run之后就没有了。我要怎么保存它呢?
int count;
StringBuffer result = new StringBuffer();
public String getPermutation(int n, int k) {
// Start typing your Java solution below
// DO NOT write main() function
count = 0;
if(n == 0 || k == 0){
return "";
}
StringBuffer sol = new StringBuffer();
permute(n, k, 1, sol, result);
// System.out.println("pass is:" + result);
String ret = new String(result);
return ret;
}
public void permute(int n, int k, int level, StringBuffer sol,
StringBuffer result){
if(level == n + 1){
count++;
System.out.println(sol);
if(count == k){
result = new StringBuffer(sol);
}
System.out.println("safe result as: " + result);
}
for(int i = level; i <= n; i++){
sol.append(i);
permute(n, k, level + 1, sol, result);
sol.setLength(sol.length() - 1);
}
}
先谢谢各位大牛!
我知道这个问题有更好的解法,但我想知道:
我想把第k个permutation存在result中, 无论我result是否设为全局的,它都存不下。
当时读到的时候,有存进去,可是接着run之后就没有了。我要怎么保存它呢?
int count;
StringBuffer result = new StringBuffer();
public String getPermutation(int n, int k) {
// Start typing your Java solution below
// DO NOT write main() function
count = 0;
if(n == 0 || k == 0){
return "";
}
StringBuffer sol = new StringBuffer();
permute(n, k, 1, sol, result);
// System.out.println("pass is:" + result);
String ret = new String(result);
return ret;
}
public void permute(int n, int k, int level, StringBuffer sol,
StringBuffer result){
if(level == n + 1){
count++;
System.out.println(sol);
if(count == k){
result = new StringBuffer(sol);
}
System.out.println("safe result as: " + result);
}
for(int i = level; i <= n; i++){
sol.append(i);
permute(n, k, level + 1, sol, result);
sol.setLength(sol.length() - 1);
}
}