📜  数组中最大的完美平方数(1)

📅  最后修改于: 2023-12-03 14:54:59.446000             🧑  作者: Mango

数组中最大的完美平方数

在计算机编程中,一个完美平方数指的是由整数的平方根算得的自然数。例如,4是一个完美平方数,因为$22=4$。此外,也可以通过以下公式,非常快速地判断一个数是否是完美平方数:如果$n=\sqrt{n}\sqrt{n}$,则$n$为完美平方数。

假设你有一个正整数数组,现在需要找到数组中最大的完美平方数,并将这个完美平方数返回。如果数组中没有完美平方数,则返回-1。

算法思路

这道题的主要思路是遍历整个数组,将每个元素平方后,再用上述的公式进行判断是否为完美平方数。如果是,则将这个数与当前最大的完美平方数进行比较,如果大于当前最大的完美平方数,则更新当前最大的完美平方数。遍历完成之后,如果不存在完美平方数,则当前最大的完美平方数为-1。

代码实现:

def largest_perfect_square(arr):
    max_perfect_square = -1
    for num in arr:
        if num == int(num**0.5)**2:
            max_perfect_square = max(max_perfect_square, num)
    return max_perfect_square
时间复杂度

这段代码的时间复杂度为$O(n)$,其中$n$为数组中元素的数量。

示例
>>> largest_perfect_square([1, 2, 3, 4, 5, 6, 7, 8, 9])
9
>>> largest_perfect_square([1, 2, 3, 5, 6, 7, 8, 10])
-1