http://www.lintcode.com/en/problem/find-the-missing-number-ii/#
1 ~ n组成的字符串里面找到缺失的那个数
dfs + 全局变量(res & found) + cache
public class Solution {
/**
* @param n an integer
* @param str a string with number from 1-n
* in random order and miss one number
* @return an integer
*/
int res = 0;
boolean found = false;
public int findMissing2(int n, String str) {
// Write your code here
boolean[] cache = new boolean[n + 1];
dfs(n, str, 0, cache);
return res;
}
private void dfs(int n, String str, int i, boolean[] cache) {
if (i >= str.length() || found) {
if (!found) {
for (int j = 0; j <= n; j++) {
if (!cache[j]) {
res = j;
}
}
found = true;
}
return;
}
int j = i;
int sum = str.charAt(j) - '0';
if (sum == 0) {
return;
}
while (sum <= n) {
if (!cache[sum]) {
cache[sum] = true;
dfs(n, str, j + 1, cache);
cache[sum] = false;
}
j++;
if (j >= str.length()) {
break;
}
sum = sum * 10 + (str.charAt(j) - '0');
}
}
}

被折叠的 条评论
为什么被折叠?



