给定长度为N的数组arr [] ,任务是找到具有最小可能LCM的最长子序列的长度。
例子:
Input: arr[] = {1, 3, 1}
Output: 2
{1} and {1} are the subsequences
with the minimum possible LCM.
Input: arr[] = {3, 4, 5, 3, 2, 3}
Output: 1
{2} is the required subsequence.
方法:来自数组的最小LCM等于数组中最小元素的值。现在,要最大化结果子序列的长度,请找到数组中具有等于此最小值的值的元素数量,并且这些元素的计数是必需的答案。
下面是上述方法的实现:
C++
// C++ implementation of the approach
#include
using namespace std;
// Function to return the length
// of the largest subsequence with
// minimum possible LCM
int maxLen(int* arr, int n)
{
// Minimum value from the array
int min_val = *min_element(arr, arr + n);
// To store the frequency of the
// minimum element in the array
int freq = 0;
for (int i = 0; i < n; i++) {
// If current element is equal
// to the minimum element
if (arr[i] == min_val)
freq++;
}
return freq;
}
// Driver code
int main()
{
int arr[] = { 1, 3, 1 };
int n = sizeof(arr) / sizeof(int);
cout << maxLen(arr, n);
return 0;
}
Java
// Java implementation of the approach
import java.util.Arrays;
class GFG
{
// Function to return the length
// of the largest subsequence with
// minimum possible LCM
static int maxLen(int[] arr, int n)
{
// Minimum value from the array
int min_val = Arrays.stream(arr).min().getAsInt();
// To store the frequency of the
// minimum element in the array
int freq = 0;
for (int i = 0; i < n; i++)
{
// If current element is equal
// to the minimum element
if (arr[i] == min_val)
freq++;
}
return freq;
}
// Driver code
public static void main(String []args)
{
int arr[] = { 1, 3, 1 };
int n = arr.length;
System.out.println(maxLen(arr, n));
}
}
// This code is contributed by PrinciRaj1992
Python3
# Python3 implementation of the approach
# Function to return the length
# of the largest subsequence with
# minimum possible LCM
def maxLen(arr, n) :
# Minimum value from the array
min_val = min(arr);
# To store the frequency of the
# minimum element in the array
freq = 0;
for i in range(n) :
# If current element is equal
# to the minimum element
if (arr[i] == min_val) :
freq += 1;
return freq;
# Driver code
if __name__ == "__main__" :
arr = [ 1, 3, 1 ];
n = len(arr);
print(maxLen(arr, n));
# This code is contributed by AnkitRai01
C#
// C# implementation of the approach
using System;
using System.Linq;
class GFG
{
// Function to return the length
// of the largest subsequence with
// minimum possible LCM
static int maxLen(int[] arr, int n)
{
// Minimum value from the array
int min_val = arr.Min();
// To store the frequency of the
// minimum element in the array
int freq = 0;
for (int i = 0; i < n; i++)
{
// If current element is equal
// to the minimum element
if (arr[i] == min_val)
freq++;
}
return freq;
}
// Driver code
public static void Main(String []args)
{
int []arr = { 1, 3, 1 };
int n = arr.Length;
Console.WriteLine(maxLen(arr, n));
}
}
// This code is contributed by 29AjayKumar
输出:
2