Java >> Java tutorial >  >> Java

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

  1. Start
  2. Deklarer en variabel til at gemme array-elementerne
  3. Bed brugeren om at initialisere variablen.
  4. Deklarer en matrix.
  5. Bed brugeren om at initialisere dette array.
  6. Erklære et hashmap for det samme.
  7. Brug en for-løkke for at kontrollere, om kortet indeholder duplikerede elementer.
  8. Hvis duplikatelement findes, skal du øge indekset ved det element med én.
  9. Hvis duplikatelement ikke findes, så tildel det med én.
  10. Begynd at udskrive elementerne.
  11. Udskriv kun elementerne, hvis antallet er større end én.
  12. 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

  1. Start
  2. Deklarer en variabel for at gemme matrixstørrelsen.
  3. Bed brugeren om at initialisere denne variabel.
  4. Deklarer en matrix.
  5. Bed brugeren om at initialisere dette array.
  6. Deklarer en variabel max, og tildel den med Integer.MIN_VALUE.
  7. Deklarer et andet array for at gemme frekvensen af ​​alle variablerne.
  8. Beregn frekvensen af ​​hver variabel.
  9. Udskriv kun elementet og dets frekvens, hvis dets frekvens er mere end 1.
  10. Vis output.
  11. 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


Java tag