【发布时间】:2019-07-14 05:26:57
【问题描述】:
我写了一个解决方案来检查一个数字(N)是否可以表示为
其中 A > 0 和 P > 1。我认为这个解决方案的复杂度是 O()
但我不确定日志的基础,也没有数学解释,我只是了解循环的工作原理,帮助我得出结论。
public int isPower(int A) {
for (int i = 2; i <= Math.sqrt(A); i++) {
for (int j = 2; j <= (Math.log(A) / Math.log(i)); j++) {
if ((int)Math.pow(i, j) == A)
return 1;
}
}
return (A == 1) ? 1: 0;
}
我正在准备面试,任何解决方案都将不胜感激,并将帮助我更好地准备。另外,如果您认为这个问题可以比我的算法更快地完成,请告诉我。
【问题讨论】:
-
@AshvinSharma 有什么问题?
-
检查问题的前两行。
标签: java time-complexity big-o complexity-theory