给定一个包含大小为N的整数的数组arr ,任务是从数组中删除所有具有奇数频率的元素。
例子:
Input: arr[] = {3, 3, 3, 2, 2, 4, 7, 7}
Output: {2, 2, 7, 7}
Explanation:
Frequency of 3 = 3
Frequency of 2 = 2
Frequency of 4 = 1
Frequency of 7 = 2
Therefore, the elements 3 and 4 have odd frequencies, and hence the are removed.
Input: arr[] = {1, 3, 3, 1, 2, 5, 6, 5}
Output: {1, 3, 3, 1, 5, 5}
方法:
- 创建一个映射,并将数组中每个元素的频率存储到同一映射。
- 然后,遍历数组,并借助地图找出哪些元素具有奇数频率。
- 忽略所有那些具有奇数频率的元素,并打印其余部分
下面是上述方法的实现:
C++
// C++ program to removes all odd
// frequency elements from an Array
#include
using namespace std;
// Function that removes the
// elements which have odd
// frequencies in the array
void remove(int arr[], int n)
{
// Create a map to store the
// frequency of each element
unordered_map m;
for (int i = 0; i < n; i++) {
m[arr[i]]++;
}
// Remove the elements which
// have odd frequencies
for (int i = 0; i < n; i++) {
// If the element has
// odd frequency then skip
if ((m[arr[i]] & 1))
continue;
cout << arr[i] << ", ";
}
}
// Driver code
int main()
{
int arr[]
= { 3, 3, 3, 2,
2, 4, 7, 7 };
int n = sizeof(arr) / sizeof(arr[0]);
// Function call
remove(arr, n);
return 0;
}
Java
// Java program to removes all odd
// frequency elements from an Array
import java.util.*;
class GFG {
// Function that removes the
// elements which have odd
// frequencies in the array
static void remove(int arr[], int n) {
// Create a map to store the
// frequency of each element
HashMap mp = new HashMap();
for (int i = 0; i < n; i++) {
if (mp.containsKey(arr[i])) {
mp.put(arr[i], mp.get(arr[i]) + 1);
} else {
mp.put(arr[i], 1);
}
}
// Remove the elements which
// have odd frequencies
for (int i = 0; i < n; i++) {
// If the element has
// odd frequency then skip
if ((mp.containsKey(arr[i]) && mp.get(arr[i]) % 2 == 1))
continue;
System.out.print(arr[i] + ", ");
}
}
// Driver code
public static void main(String[] args) {
int arr[] = { 3, 3, 3, 2, 2, 4, 7, 7 };
int n = arr.length;
// Function call
remove(arr, n);
}
}
// This code is contributed by Rajput-Ji
Python3
# Python3 program to removes all odd
# frequency elements from an Array
# Function that removes the
# elements which have odd
# frequencies in the array
def remove(arr, n) :
# Create a map to store the
# frequency of each element
m = dict.fromkeys(arr,0);
for i in range(n) :
m[arr[i]] += 1;
# Remove the elements which
# have odd frequencies
for i in range(n) :
# If the element has
# odd frequency then skip
if ((m[arr[i]] & 1)) :
continue;
print(arr[i],end= ", ");
# Driver code
if __name__ == "__main__" :
arr = [ 3, 3, 3, 2,
2, 4, 7, 7 ];
n = len(arr);
# Function call
remove(arr, n);
# This code is contributed by Yash_R
C#
// C# program to removes all odd
// frequency elements from an Array
using System;
using System.Collections.Generic;
class GFG {
// Function that removes the
// elements which have odd
// frequencies in the array
static void remove(int []arr, int n) {
// Create a map to store the
// frequency of each element
Dictionary mp = new Dictionary();
for (int i = 0; i < n; i++) {
if (mp.ContainsKey(arr[i])) {
mp[arr[i]] = mp[arr[i]] + 1;
} else {
mp.Add(arr[i], 1);
}
}
// Remove the elements which
// have odd frequencies
for (int i = 0; i < n; i++) {
// If the element has
// odd frequency then skip
if ((mp.ContainsKey(arr[i]) && mp[arr[i]] % 2 == 1))
continue;
Console.Write(arr[i] + ", ");
}
}
// Driver code
public static void Main(String[] args) {
int []arr = { 3, 3, 3, 2, 2, 4, 7, 7 };
int n = arr.Length;
// Function call
remove(arr, n);
}
}
// This code is contributed by 29AjayKumar
输出:
2, 2, 7, 7,