我们有一个测试练习,您需要找出给定的 N 数是否是另一个数的平方,时间复杂度最小。
我写:
public static boolean what2(int n) {
double newN = (double)n;
double x = Math.sqrt(newN);
int y = (int)x;
if (y * y == n)
return false;
else
return true;
}
我在网上查看,特别是在 SO 上试图找到它的复杂性sqrt
但找不到它。这篇 SO 帖子是针对 C# 的并且说它的 O(1),而这篇 Java 帖子说它的 O(1) 但可能会遍历所有双精度数。
我试图了解这种方法的最差时间复杂度。所有其他操作都是 O(1),所以这是唯一的因素。任何反馈将不胜感激!