本文概述
- C++
- Java
- Python3
- C#
- 的PHP
- C++
- Java
- Python3
- C#
例子 :
Input : arr[] = {1, 3, 2, 1, 2, 2, 3, 1}
Output : 3
3 appears minimum number of times in given
array.Input : arr[] = {10, 20, 30}
Output : 10 or 20 or 30
一种简单的解决方案是要运行两个循环。外循环一一挑选所有元素。内循环找到所拾取元素的频率, 并与到目前为止的最小值进行比较。该解决方案的时间复杂度为O(n2)
一种更好的解决方案是要进行排序。我们首先对数组进行排序, 然后线性遍历数组。
C++
//CPP program to find the least frequent element
//in an array.
#include <
bits/stdc++.h>
using namespace std;
int leastFrequent( int arr[], int n)
{
//Sort the array
sort(arr, arr + n);
//find the min frequency using linear traversal
int min_count = n+1, res = -1, curr_count = 1;
for ( int i = 1;
i <
n;
i++) {
if (arr[i] == arr[i - 1])
curr_count++;
else {
if (curr_count <
min_count) {
min_count = curr_count;
res = arr[i - 1];
}
curr_count = 1;
}
}//If last element is least frequent
if (curr_count <
min_count)
{
min_count = curr_count;
res = arr[n - 1];
}return res;
}//driver program
int main()
{
int arr[] = {1, 3, 2, 1, 2, 2, 3, 1};
int n = sizeof (arr) /sizeof (arr[0]);
cout <
<
leastFrequent(arr, n);
return 0;
}
Java
//Java program to find the least frequent element
//in an array.
import java.io.*;
import java.util.*;
class GFG {static int leastFrequent( int arr[], int n)
{//Sort the array
Arrays.sort(arr);
//find the min frequency using
//linear traversal
int min_count = n+ 1 , res = - 1 ;
int curr_count = 1 ;
for ( int i = 1 ;
i <
n;
i++) {
if (arr[i] == arr[i - 1 ])
curr_count++;
else {
if (curr_count <
min_count) {
min_count = curr_count;
res = arr[i - 1 ];
}curr_count = 1 ;
}
}//If last element is least frequent
if (curr_count <
min_count)
{
min_count = curr_count;
res = arr[n - 1 ];
}return res;
}//driver program
public static void main(String args[])
{
int arr[] = { 1 , 3 , 2 , 1 , 2 , 2 , 3 , 1 };
int n = arr.length;
System.out.print(leastFrequent(arr, n));
}
}/*This code is contributed by Nikita Tiwari.*/
Python3
# Python 3 program to find the least
# frequent element in an array.def leastFrequent(arr, n) :# Sort the array
arr.sort()# find the min frequency using
# linear traversal
min_count = n + 1
res = - 1
curr_count = 1
for i in range ( 1 , n) :
if (arr[i] = = arr[i - 1 ]) :
curr_count = curr_count + 1
else :
if (curr_count <
min_count) :
min_count = curr_count
res = arr[i - 1 ]curr_count = 1# If last element is least frequent
if (curr_count <
min_count) :
min_count = curr_count
res = arr[n - 1 ]return res# Driver program
arr = [ 1 , 3 , 2 , 1 , 2 , 2 , 3 , 1 ]
n = len (arr)
print (leastFrequent(arr, n))# This code is contributed
# by Nikita Tiwari.
C#
//C# program to find the least
//frequent element in an array.
using System;
class GFG {static int leastFrequent( int [] arr, int n)
{
//Sort the array
Array.Sort(arr);
//find the min frequency
//using linear traversal
int min_count = n + 1, res = -1;
int curr_count = 1;
for ( int i = 1;
i <
n;
i++)
{
if (arr[i] == arr[i - 1])
curr_count++;
else
{
if (curr_count <
min_count)
{
min_count = curr_count;
res = arr[i - 1];
}curr_count = 1;
}
}//If last element is least frequent
if (curr_count <
min_count)
{
min_count = curr_count;
res = arr[n - 1];
}return res;
}//Driver code
static public void Main ()
{
int [] arr = {1, 3, 2, 1, 2, 2, 3, 1};
int n = arr.Length;
//Function calling
Console.Write(leastFrequent(arr, n));
}
}//This code is contributed by Shrikant13
的PHP
<
?php
//PHP program to find the
//least frequent element
//in an array.function leastFrequent( $arr , $n )
{//Sort the array
sort( $arr );
sort( $arr , $n );
//find the min frequency
//using linear traversal
$min_count = $n + 1;
$res = -1;
$curr_count = 1;
for ( $i = 1;
$i <
$n ;
$i ++)
{
if ( $arr [ $i ] == $arr [ $i - 1])
$curr_count ++;
else
{
if ( $curr_count <
$min_count )
{
$min_count = $curr_count ;
$res = $arr [ $i - 1];
}
$curr_count = 1;
}
}//If last element is
//least frequent
if ( $curr_count <
$min_count )
{
$min_count = $curr_count ;
$res = $arr [ $n - 1];
}return $res ;
}//Driver Code
{
$arr = array (1, 3, 2, 1, 2, 2, 3, 1);
$n = sizeof( $arr ) /sizeof( $arr [0]);
echo leastFrequent( $arr , $n );
return 0;
}//This code is contributed by nitin mittal
?>
输出如下:
3
时间复杂度:O(n Log n)
辅助空间:O(1)
一个有效的解决方案是使用哈希。我们创建一个哈希表, 并将元素及其频率计数存储为键值对。最后, 我们遍历哈希表并打印具有最小值的键。
C++
//CPP program to find the least frequent element
//in an array.
#include <
bits/stdc++.h>
using namespace std;
int leastFrequent( int arr[], int n)
{
//Insert all elements in hash.
unordered_map<
int , int>
hash;
for ( int i = 0;
i <
n;
i++)
hash[arr[i]]++;
//find the min frequency
int min_count = n+1, res = -1;
for ( auto i : hash) {
if (min_count>
= i.second) {
res = i.first;
min_count = i.second;
}
}return res;
}//driver program
int main()
{
int arr[] = {1, 3, 2, 1, 2, 2, 3, 1};
int n = sizeof (arr) /sizeof (arr[0]);
cout <
<
leastFrequent(arr, n);
return 0;
}
Java
//Java program to find the least frequent element
//in an array
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
class GFG {static int leastFrequent( int arr[], int n)
{//Insert all elements in hash.
Map<
Integer, Integer>
count =
new HashMap<
Integer, Integer>
();
for ( int i = 0 ;
i <
n;
i++)
{
int key = arr[i];
if (count.containsKey(key))
{
int freq = count.get(key);
freq++;
count.put(key, freq);
}
else
count.put(key, 1 );
}//find min frequency.
int min_count = n+ 1 , res = - 1 ;
for (Entry<
Integer, Integer>
val : count.entrySet())
{
if (min_count>
= val.getValue())
{
res = val.getKey();
min_count = val.getValue();
}
}return res;
}//driver program
public static void main (String[] args) {int arr[] = { 1 , 3 , 2 , 1 , 2 , 2 , 3 , 1 };
int n = arr.length;
System.out.println(leastFrequent(arr, n));
}
}//This code is contributed by Akash Singh.
Python3
# Python3 program to find the most
# frequent element in an array.
import math as mtdef leastFrequent(arr, n):# Insert all elements in Hash.
Hash = dict ()
for i in range (n):
if arr[i] in Hash .keys():
Hash [arr[i]] + = 1
else :
Hash [arr[i]] = 1# find the max frequency
min_count = n + 1
res = - 1
for i in Hash :
if (min_count>
= Hash [i]):
res = i
min_count = Hash [i]return res# Driver Code
arr = [ 1 , 3 , 2 , 1 , 2 , 2 , 3 , 1 ]
n = len (arr)
print (leastFrequent(arr, n))# This code is contributed by
# mohit kumar 29
C#
//C# program to find the
//least frequent element
//in an array.
using System;
using System.Collections.Generic;
class GFG
{
static int leastFrequent( int []arr, int n)
{
//Insert all elements in hash.
Dictionary<
int , int>
count =
new Dictionary<
int , int>
();
for ( int i = 0;
i <
n;
i++)
{
int key = arr[i];
if (count.ContainsKey(key))
{
int freq = count[key];
freq++;
count[key] = freq;
}
else
count.Add(key, 1);
}//find the min frequency
int min_count = n + 1, res = -1;
foreach (KeyValuePair<
int , int>
pair in count)
{
if (min_count>
= pair.Value)
{
res = pair.Key;
min_count = pair.Value;
}
}
return res;
}//Driver Code
static void Main()
{
int []arr = new int []{1, 3, 2, 1, 2, 2, 3, 1};
int n = arr.Length;
Console.Write(leastFrequent(arr, n));
}
}//This code is contributed by
//Manish Shaw(manishshaw1)
输出如下:
3
时间复杂度:O(n)
【算法设计(数组中最少的元素)】辅助空间:O(n)
推荐阅读
- 为什么要在PHP中同时检查isset()和!empty()函数()
- 快速排序与合并排序有什么区别()
- 算法设计(数组中滑动窗口的中位数|S2)
- 免费win7旗舰版安装图文详细教程
- 电脑公司Win8纯净系统64位下载
- windows7 32位系统重装图文详细教程
- 番茄花园萝卜家园系统通用安装办法
- 深度技术欢度国庆纯净版xp系统下载
- ghost过程中出错原因及处理办法