这是计算十进制数的基本版本的代码。我不确定它的时间复杂度。
谢谢,
public static String convertToBase(int num, int base) {
if (base > 36) {
throw new IllegalArgumentException("The input argument should be less than or equal to 36.");
}
final StringBuilder sb = new StringBuilder();
while (num > 0) {
final int div = num % base;
if (div > 9) {
final int sum = div + 55;
sb.append((char) sum);
} else {
sb.append(div);
}
num = num / base;
}
return sb.reverse().toString();
}
严格来说,答案是O(1)
.
If int
是支持任意精度的整数类型,那么显然答案是O(logN)
.
但事实并非如此!一个int
不能大于Integer.MAX_INT
是 2^31 - 1 ... 或大约 20 亿。
所以,如果我们让N
(无界整数)趋于无穷大,其值num
环绕,使其永远不会超过Integer.MAX_INT
。这意味着如果(例如)base
is 10
, the while
循环可以执行at most log10(2^31)
次(即 10 次)...以及convertToBase
is O(1)
.
但是,如果您准备滥用术语/符号,您could说它是O(logN)
对于足够小的N
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)