本文概述
- C ++
- Java
- Python3
- C#
【用数组的总大小和该元素的频率之差替换每个元素】例子:
Input: arr[] = { 1, 2, 5, 2, 2, 5, 4 }
Output: 6 4 5 4 4 5 6
Size of the array is 7.
The frequency of 1 is 1. So replace it by 7-1 = 6
The frequency of 2 is 3. So replace it by 7-3 = 4Input: arr[] = { 4, 5, 4, 5, 6, 6, 6 }
Output: 5 5 5 5 4 4 4
方法:
- 拿一个哈希图, 它将存储数组中所有元素的频率。
- 现在, 再次遍历。
- 现在, 用数组总大小及其频率之差替换所有元素。
- 打印修改后的数组。
C ++
//C++ program to Replace each element
//by the difference of the total size
//of the array and its frequency
#include <
bits/stdc++.h>
using namespace std;
//Function to replace the elements
void ReplaceElements( int arr[], int n)
{
//Hash map which will store the
//frequency of the elements of the array.
unordered_map<
int , int>
mp;
for ( int i = 0;
i <
n;
++i) //Increment the frequency
//of the element by 1.
mp[arr[i]]++;
//Replace every element by its frequency
for ( int i = 0;
i <
n;
++i)
arr[i] = n - mp[arr[i]];
}//Driver code
int main()
{
int arr[] = { 1, 2, 5, 2, 2, 5, 4 };
int n = sizeof (arr) /sizeof (arr[0]);
ReplaceElements(arr, n);
//Print the modified array.
for ( int i = 0;
i <
n;
++i)
cout <
<
arr[i] <
<
" " ;
return 0;
}
Java
//Java program to Replace each element
//by the difference of the total size
//of the array and its frequency
import java.util.*;
class GFG
{//Function to replace the elements
static void ReplaceElements( int arr[], int n)
{
//Hash map which will store the
//frequency of the elements of the array.
HashMap<
Integer, Integer>
mp = new HashMap<
>
();
for ( int i = 0 ;
i <
n;
i++)
{//Increment the frequency
//of the element by 1.
if (!mp.containsKey(arr[i]))
{
mp.put(arr[i], 1 );
}
else
{
mp.put(arr[i], mp.get(arr[i]) + 1 );
}
}//Replace every element by its frequency
for ( int i = 0 ;
i <
n;
++i)
{
arr[i] = n - mp.get(arr[i]);
}}//Driver code
public static void main(String[] args)
{
int arr[] = { 1 , 2 , 5 , 2 , 2 , 5 , 4 };
int n = arr.length;
ReplaceElements(arr, n);
//Print the modified array.
for ( int i = 0 ;
i <
n;
++i)
{
System.out.print(arr[i] + " " );
}
}
}//This code contributed by Rajput-Ji
Python3
# Python3 program to Replace each element
# by the difference of the total size
# of the array and its frequency# Function to replace the elements
def ReplaceElements(arr, n):# Hash map which will store the
# frequency of the elements of the array.
mp = dict ()for i in range (n):# Increment the frequency
# of the element by 1.
mp[arr[i]] = mp.get(arr[i], 0 ) + 1# Replace every element by its frequency
for i in range (n):
arr[i] = n - mp[arr[i]]# Driver code
arr = [ 1 , 2 , 5 , 2 , 2 , 5 , 4 ]
n = len (arr)ReplaceElements(arr, n)# Print the modified array.
for i in range (n):
print (arr[i], end = " " )# This code is contributed by mohit kumar
C#
//C# program to Replace each element
//by the difference of the total size
//of the array and its frequency
using System;
using System.Collections.Generic;
class GFG
{//Function to replace the elements
static void ReplaceElements( int []arr, int n)
{
//Hash map which will store the
//frequency of the elements of the array.
Dictionary<
int , int>
mp = new Dictionary<
int , int>
();
for ( int i = 0;
i <
n;
i++)
{//Increment the frequency
//of the element by 1.
if (!mp.ContainsKey(arr[i]))
{
mp.Add(arr[i], 1);
}
else
{
var a = mp[arr[i]] + 1;
mp.Remove(arr[i]);
mp.Add(arr[i], a);
}
}//Replace every element by its frequency
for ( int i = 0;
i <
n;
++i)
{
arr[i] = n - mp[arr[i]];
}}//Driver code
public static void Main()
{
int []arr = {1, 2, 5, 2, 2, 5, 4};
int n = arr.Length;
ReplaceElements(arr, n);
//Print the modified array.
for ( int i = 0;
i <
n;
++i)
{
Console.Write(arr[i] + " " );
}
}
}/* This code contributed by PrinciRaj1992 */
输出如下:
6 4 5 4 4 5 6
时间复杂度–O(N)
推荐阅读
- Python旋转列表的方式
- Python继承中的方法解析顺序
- 对于给定数组的任何排列,最大化第一个元素的按位与,并保留其余元素
- 如何使用PHP通过HTML表单在JSON文件中附加数据()
- 将给定矩阵转换为排序的螺旋矩阵
- 查找一个N x N网格,其每行和每列的xor相等
- 算法题(满足给定方程的最小正整数X)
- [转] 在安卓设备上使用 Chrome 远程调试功能
- Android Studio之高德地图实现定位和3D地图显示