给定大小为N且整数K的数组arr [] ,任务是找到一个包含最大位数K的数组元素。如果存在多个解决方案,则打印其中任何一种。否则,打印-1 。
例子:
Input: arr[] = {3, 77, 343, 456}, K = 3
Output: 343
Explanation:
Frequency of 3 in array elements: 1, 0, 2, 0
343 has maximum frequency i.e. 2.
Input: arr[] = {1, 1111, 111, 11}, K = 1
Output: 1111
Explanation:
Frequency of 1 in array elements: 1, 4, 3, 2
1111 has maximum frequency i.e. 4.
方法:想法是遍历数组,对于每个单独的数组元素,计算数字K在其中的出现次数。请按照以下步骤解决问题:
- 将数字K的最大频率(例如maxfreq)初始化为0 。
- 从开始元素到结束遍历给定的数组。
- 对于每个遍历的元素,找到该元素中数字K的频率。如果大于maxfreq ,则更新maxfreq并存储该元素。
下面是上述方法的实现:
C++
// C++ program for the above approach
#include
using namespace std;
// Function to find the count of
// digits, k in the given number n
int countFreq(int N, int K)
{
// Stores count of occurrence
// of digit K in N
int count = 0;
// Iterate over digits of N
while (N > 0) {
// If current digit is k
if (N % 10 == K) {
// Update count
count++;
}
// Update N
N = N / 10;
}
return count;
}
// Utility function to find an array element
// having maximum frequency of digit k
int findElementUtil(int arr[], int N, int K)
{
// Stores frequency of
// digit K in arr[i]
int c;
// Stores maximum frequency of
// digit K in the array
int max;
// Stores an array element having
// maximum frequency of digit k
int ele;
// Initialize max
max = 0;
// Traverse the array
for (int i = 0; i < N; i++) {
// Count the frequency of
// digit k in arr[i]
c = countFreq(arr[i], K);
// Update max with maximum
// frequency found so far
if (c > max) {
max = c;
// Update ele
ele = arr[i];
}
}
// If there is no array element
// having digit k in it
if (max == 0)
return -1;
else
return ele;
}
// Function to find an array element
// having maximum frequency of digit k
void findElement(int arr[], int N, int K)
{
// Stores an array element having
// maximum frequency of digit k
int ele = findElementUtil(arr, N, K);
// If there is no element found
// having digit k in it
if (ele == -1)
cout << "-1";
else
// Print the element having max
// frequency of digit k
cout << ele;
}
// Driver Code
int main()
{
// The digit whose max
// occurrence has to be found
int K = 3;
// Given array
int arr[] = { 3, 77, 343, 456 };
// Size of array
int N = sizeof(arr) / sizeof(arr[0]);
// Function Call
findElement(arr, K, N);
return 0;
}
Java
// Java program for the above approach
class GFG {
// Function to find the count of
// digits, k in the given number n
static int countFreq(int N, int K)
{
// Stores count of occurrence
// of digit K in N
int count = 0;
// Iterate over digits of N
while (N > 0)
{
// If current digit is k
if (N % 10 == K)
{
// Update count
count++;
}
// Update N
N = N / 10;
}
return count;
}
// Utility function to find an array element
// having maximum frequency of digit k
static int findElementUtil(int arr[], int N, int K)
{
// Stores frequency of
// digit K in arr[i]
int c;
// Stores maximum frequency of
// digit K in the array
int max;
// Stores an array element having
// maximum frequency of digit k
int ele = 0;
// Initialize max
max = 0;
// Traverse the array
for (int i = 0; i < N; i++)
{
// Count the frequency of
// digit k in arr[i]
c = countFreq(arr[i], K);
// Update max with maximum
// frequency found so far
if (c > max)
{
max = c;
// Update ele
ele = arr[i];
}
}
// If there is no array element
// having digit k in it
if (max == 0)
return -1;
else
return ele;
}
// Function to find an array element
// having maximum frequency of digit k
static void findElement(int arr[], int N, int K)
{
// Stores an array element having
// maximum frequency of digit k
int ele = findElementUtil(arr, N, K);
// If there is no element found
// having digit k in it
if (ele == -1)
System.out.print("-1");
else
// Print the element having max
// frequency of digit k
System.out.print(ele);
}
// Driver Code
public static void main (String[] args)
{
// The digit whose max
// occurrence has to be found
int K = 3;
// Given array
int arr[] = { 3, 77, 343, 456 };
// Size of array
int N = arr.length;
// Function Call
findElement(arr, K, N);
}
}
// This code is contributed by AnkThon
Python3
# Python3 program for the above approach
# Function to find the count of
# digits, k in the given number n
def countFreq(N, K):
# Stores count of occurrence
# of digit K in N
count = 0
# Iterate over digits of N
while (N > 0):
# If current digit is k
if (N % 10 == K):
# Update count
count += 1
# Update N
N = N // 10
return count
# Utility function to find an array element
# having maximum frequency of digit k
def findElementUtil(arr, N, K):
# Stores frequency of
# digit K in arr[i]
c = 0
# Stores maximum frequency of
# digit K in the array
max = 0
# Stores an array element having
# maximum frequency of digit k
ele = 0
# Initialize max
# max = 0
# Traverse the array
for i in range(N):
# Count the frequency of
# digit k in arr[i]
c = countFreq(arr[i], K)
# Update max with maximum
# frequency found so far
if (c > max):
max = c
# Update ele
ele = arr[i]
# If there is no array element
# having digit k in it
if (max == 0):
return -1
else:
return ele
# Function to find an array element
# having maximum frequency of digit k
def findElement(arr, N, K):
# Stores an array element having
# maximum frequency of digit k
ele = findElementUtil(arr, N, K)
# If there is no element found
# having digit k in it
if (ele == -1):
print("-1", end = "")
else:
# Prthe element having max
# frequency of digit k
print(ele)
# Driver Code
if __name__ == '__main__':
# The digit whose max
# occurrence has to be found
K = 3
# Given array
arr = [3, 77, 343, 456]
# Size of array
N = len(arr)
# Function Call
findElement(arr, K, N)
# This code is contributed by mohit kumar 29
C#
// C# program for the above approach
using System;
class GFG {
// Function to find the count of
// digits, k in the given number n
static int countFreq(int N, int K)
{
// Stores count of occurrence
// of digit K in N
int count = 0;
// Iterate over digits of N
while (N > 0)
{
// If current digit is k
if (N % 10 == K)
{
// Update count
count++;
}
// Update N
N = N / 10;
}
return count;
}
// Utility function to find an array element
// having maximum frequency of digit k
static int findElementUtil(int []arr, int N, int K)
{
// Stores frequency of
// digit K in arr[i]
int c;
// Stores maximum frequency of
// digit K in the array
int max;
// Stores an array element having
// maximum frequency of digit k
int ele = 0;
// Initialize max
max = 0;
// Traverse the array
for (int i = 0; i < N; i++)
{
// Count the frequency of
// digit k in arr[i]
c = countFreq(arr[i], K);
// Update max with maximum
// frequency found so far
if (c > max)
{
max = c;
// Update ele
ele = arr[i];
}
}
// If there is no array element
// having digit k in it
if (max == 0)
return -1;
else
return ele;
}
// Function to find an array element
// having maximum frequency of digit k
static void findElement(int []arr, int N, int K)
{
// Stores an array element having
// maximum frequency of digit k
int ele = findElementUtil(arr, N, K);
// If there is no element found
// having digit k in it
if (ele == -1)
Console.Write("-1");
else
// Print the element having max
// frequency of digit k
Console.Write(ele);
}
// Driver Code
public static void Main(String[] args)
{
// The digit whose max
// occurrence has to be found
int K = 3;
// Given array
int []arr = { 3, 77, 343, 456 };
// Size of array
int N = arr.Length;
// Function Call
findElement(arr, K, N);
}
}
// This code is contributed by 29AjayKumar
输出:
343
时间复杂度: O(N * log 10 (N))
辅助空间: O(1)