标签:for its inf 数学 while idt als alt ber
2019-10-14 22:21:29
问题描述:

问题求解:
暴力求解必然会超时,那么就需要考虑数学的方法来降低时间复杂度了。
public int atMostNGivenDigitSet(String[] D, int N) {
int n = D.length;
int res = 0;
char[] chs = new char[n];
for (int i = 0; i < n; i++) {
chs[i] = D[i].charAt(0);
}
char[] nums = String.valueOf(N).toCharArray();
int len = nums.length;
for (int i = 1; i < len; i++) res += Math.pow(n, i);
int i = 0;
while (i < len) {
for (char c : chs) {
if (c < nums[i]) res += Math.pow(n, len - i - 1);
}
if (!isIn(nums[i], chs)) break;
i++;
}
return i == len ? res + 1 : res;
}
private boolean isIn(char c, char[] chs) {
for (char ch : chs) {
if (ch == c) return true;
}
return false;
}
由最多N个给定数字集组成的数字 Numbers At Most N Given Digit Set
标签:for its inf 数学 while idt als alt ber
原文地址:https://www.cnblogs.com/hyserendipity/p/11674626.html