Java-program til at udskrive alle de gentagne numre med frekvens i et array
I denne tutorial lærer vi, hvordan du udskriver alle de gentagne tal med frekvens i en matrix. Men før du går videre, hvis du ikke er bekendt med begreberne for arrayet, så tjek artiklen Arrays in Java.
Input: Indtast Array-elementerne:2 4 3 5 2 3 4 6 7 8 9 6 5 4
Output: Elementer med gentagen frekvens:
Elements frekvens
2 2
3 2
4 3
5 2
6 2
Ovenstående problem kan løses på følgende måder:
Lad os se på hver af disse metoder separat.
Program 1:Find de gentagne tal med frekvens i et array
I denne metode vil vi bruge Hash Map til at udskrive de gentagne tal med frekvens i et array. Tids- og rumkompleksiteten i denne metode er O(n).
Algorithme
- Start
- Deklarer en variabel til at gemme array-elementerne
- Bed brugeren om at initialisere variablen.
- Deklarer en matrix.
- Bed brugeren om at initialisere dette array.
- Erklære et hashmap for det samme.
- Brug en for-løkke for at kontrollere, om kortet indeholder duplikerede elementer.
- Hvis duplikatelement findes, skal du øge indekset ved det element med én.
- Hvis duplikatelement ikke findes, så tildel det med én.
- Begynd at udskrive elementerne.
- Udskriv kun elementerne, hvis antallet er større end én.
- Stop.
Nedenfor er koden til det samme.
Nedenstående program viser, hvordan man udskriver gentagne elementer med frekvens i et array ved hjælp af Hashmap. Kortet vil spare en masse plads og tid.
/*Java Proggram to find the repeated elements with Frequency*/
import java.util.*;
public class Main
{
public static void main(String[] args)
{
//Take input from the user
Scanner sc=new Scanner(System.in);
int n; //Declare variable for array size
System.out.println("Enter the length of the array");
n=sc.nextInt(); //Ask the user to initialize the size of the array
int a[]=new int[n]; //declare Array
System.out.println("Enter the array elements ");
for(int i=0;i<n;i++)
{
a[i]=sc.nextInt(); //Initialize Array elements
}
//Hashmap for array elements
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < n; i++) {
if (map.containsKey(a[i]))
{
// if duplicate element in the map then increase the value of element at index by 1
int c = map.get(a[i]);
map.replace(a[i], c + 1);
}
// if not a duplicate element in map than assign it by 1.
else
map.put(a[i], 1);
}
//Print the Repeated Elements with Frequency
System.out.println("Elements Frequency");
for (Map.Entry<Integer, Integer> i : map.entrySet())
{
// print only if count of element is greater than 1.
if (i.getValue() > 1)
System.out.println(" "+ i.getKey() + " "+ i.getValue());
else
continue;
}
}
}
Indtast længden af arrayet 10
Indtast arrayelementerne 2 3 1 2 2 3 6 1 8 9
Elements Frequency
1 2
2 3
3 2
Program 2:Find de gentagne tal med frekvens i en matrix
I denne metode vil vi se, hvordan man udskriver de gentagne tal med frekvens i et array ved hjælp af et andet array.
Algorithme
- Start
- Deklarer en variabel for at gemme matrixstørrelsen.
- Bed brugeren om at initialisere denne variabel.
- Deklarer en matrix.
- Bed brugeren om at initialisere dette array.
- Deklarer en variabel max, og tildel den med Integer.MIN_VALUE.
- Deklarer et andet array for at gemme frekvensen af alle variablerne.
- Beregn frekvensen af hver variabel.
- Udskriv kun elementet og dets frekvens, hvis dets frekvens er mere end 1.
- Vis output.
- Stop
Nedenfor er koden til det samme.
Nedenstående program viser, hvordan man finder de gentagne elementer i arrayet ved hjælp af en anden. Dette nye array bruges til at gemme frekvensen af hvert element, og derefter udskrives kun de elementer, hvis frekvens er større end 1.
/*Java Proggram to find the repeated elements with Frequency*/
import java.util.*;
public class Main
{
public static void main(String[] args)
{
//Take input from the user
Scanner sc=new Scanner(System.in);
int n; //Declare variable for array size
System.out.println("Enter the length of the array");
n=sc.nextInt(); //Ask the user to initialize the size of the array
int arr[]=new int[n]; //declare Array
System.out.println("Enter the array elements ");
for(int i=0;i<n;i++)
{
arr[i]=sc.nextInt(); //Initialize Array elements
}
int max = Integer.MIN_VALUE;
for (int i = 0; i < n; i++) {
if (arr[i] > max)
max = arr[i];
}
int brr[] = new int[max + 1]; //Declare another Array to store the frequency
for (int i = 0; i < n; i++)
{
// increment in array brr for every integer in arr.
brr[arr[i]]++;
}
System.out.println("Element Frequency ");
for (int i = 0; i <= max; i++) {
// output only if element is more than 1 time in array A.
if (brr[i] > 1)
System.out.println(" " + i + " " + brr[i]);
}
}
}
Indtast længden af array 15
Indtast array-elementerne 2 3 1 2 2 3 6 1 8 9 6 8 3 4 6
Element Frequency
1 2
2 3
3 3
6 3
8 2