给定一个由n个整数组成的数组。任务是找到最大的数,即一个完美的正方形。如果没有数字是完美的平方,则打印-1。
例子:
Input : arr[] = {16, 20, 25, 2, 3, 10}
Output : 25
Explanation: 25 is the largest number
that is a perfect square.
Input : arr[] = {36, 64, 10, 16, 29, 25|
Output : 64
一个简单的解决方案是对元素进行排序并对n个数字进行排序,然后使用sqrt()函数从后面开始检查一个完美的平方数。从结尾开始的第一个数字是一个完美的平方数是我们的答案。排序的复杂度为O(n log n),而sqrt()函数的复杂度为log n,因此在最坏的情况下,复杂度为O(n log n)。
一个有效的解决方案是对O(n)中的所有元素进行迭代,并每次与最大元素进行比较,并存储所有完美平方的最大值。
下面是上述方法的实现:
C++
// CPP program to find the largest perfect
// square number among n numbers
#include
#include
using namespace std;
// Function to check if a number
// is perfect square number or not
bool checkPerfectSquare(double n)
{
// takes the sqrt of the number
double d = sqrt(n);
// checks if it is a perfect
// square number
if (d * d == n)
return true;
return false;
}
// Function to find the largest perfect
// square number in the array
int largestPerfectSquareNumber(int a[], double n)
{
// stores the maximum of all
// perfect square numbers
int maxi = -1;
// Traverse all elements in the array
for (int i = 0; i < n; i++) {
// store the maximum if current
// element is a perfect square
if (checkPerfectSquare(a[i]))
maxi = max(a[i], maxi);
}
return maxi;
}
// Driver Code
int main()
{
int a[] = { 16, 20, 25, 2, 3, 10 };
double n = sizeof(a) / sizeof(a[0]);
cout << largestPerfectSquareNumber(a, n);
return 0;
}
Java
// Java program to find the largest perfect
// square number among n numbers
import java.lang.Math;
import java.io.*;
class GFG {
// Function to check if a number
// is perfect square number or not
static boolean checkPerfectSquare(double n)
{
// takes the sqrt of the number
double d = Math.sqrt(n);
// checks if it is a perfect
// square number
if (d * d == n)
return true;
return false;
}
// Function to find the largest perfect
// square number in the array
static int largestPerfectSquareNumber(int a[], double n)
{
// stores the maximum of all
// perfect square numbers
int maxi = -1;
// Traverse all elements in the array
for (int i = 0; i < n; i++) {
// store the maximum if current
// element is a perfect square
if (checkPerfectSquare(a[i]))
maxi = Math.max(a[i], maxi);
}
return maxi;
}
// Driver Code
public static void main (String[] args) {
int []a = { 16, 20, 25, 2, 3, 10 };
double n = a.length;
System.out.println( largestPerfectSquareNumber(a, n));
}
}
// This code is contributed
// by inder_verma..
Python3
# Python3 program to find the largest perfect
# square number among n numbers
# from math lib import sqrt()
from math import sqrt
# Function to check if a number
# is perfect square number or not
def checkPerfectSquare(n) :
# takes the sqrt of the number
d = sqrt(n)
# checks if it is a perfect
# square number
if d * d == n :
return True
return False
# Function to find the largest perfect
# square number in the array
def largestPerfectSquareNumber(a, n) :
# stores the maximum of all
# perfect square numbers
maxi = -1
# Traverse all elements in the array
for i in range(n) :
# store the maximum if current
# element is a perfect square
if(checkPerfectSquare(a[i])) :
maxi = max(a[i], maxi)
return maxi
# Driver code
if __name__ == "__main__" :
a = [16, 20, 25, 2, 3, 10 ]
n = len(a)
print(largestPerfectSquareNumber(a, n))
# This code is contributed by Ryuga
C#
// C# program to find the largest perfect
// square number among n numbers
using System;
class GFG {
// Function to check if a number
// is perfect square number or not
static bool checkPerfectSquare(double n)
{
// takes the sqrt of the number
double d = Math.Sqrt(n);
// checks if it is a perfect
// square number
if (d * d == n)
return true;
return false;
}
// Function to find the largest perfect
// square number in the array
static int largestPerfectSquareNumber(int []a, double n)
{
// stores the maximum of all
// perfect square numbers
int maxi = -1;
// Traverse all elements in the array
for (int i = 0; i < n; i++) {
// store the maximum if current
// element is a perfect square
if (checkPerfectSquare(a[i]))
maxi = Math.Max(a[i], maxi);
}
return maxi;
}
// Driver Code
public static void Main () {
int []a = { 16, 20, 25, 2, 3, 10 };
double n = a.Length;
Console.WriteLine( largestPerfectSquareNumber(a, n));
}
}
// This code is contributed
// by inder_verma..
PHP
Javascript
输出:
25
时间复杂度: O(n)