Created
December 31, 2014 16:36
-
-
Save MykolaBova/e42816ccdd25ac23888c to your computer and use it in GitHub Desktop.
java calculate number of duplicates in array of integer numbers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package myjavaprogram; | |
import java.util.Arrays; | |
public class TestClass1 { | |
public static void main(String[] args){ | |
int[] array = {23, 23, 0, 43, 545, 12, -55, 43, 12, 12, -999, -87, 12, 0, 0}; | |
//int[] array = {23, -22, 0, 43, 545, 12, -55, 43, 12, 0, -999, -87, 12}; | |
//int[] array = {23, -22, 0, 23}; | |
//int[] array = {23, -22, 23}; | |
calculate_duplicates(array); | |
} | |
private static void calculate_duplicates(int[] array) { | |
calculateUniqueNumbers(array); | |
} | |
private static void calculateUniqueNumbers(int[] array) { | |
Pair[] pairs = new Pair[array.length]; | |
initializePairsAtrray(pairs, array); | |
printPairsAtrray(pairs); | |
System.out.println("array.length="+array.length); | |
System.out.println("--------------------"); | |
// update pairs array taking in account duplicates duplicates | |
for(int i = 0; i < array.length; i++) { | |
System.out.println("array[i]="+array[i] + " i="+i); | |
for(int j = i+1; j < array.length; j++) { | |
System.out.println("array[j]="+array[j]+" j="+j); | |
if(array[i] == array[j] && pairs[j].useDuringCount == true) { | |
pairs[i].occurance_num++; | |
pairs[j].occurance_num = 0; | |
pairs[j].useDuringCount = false; | |
} | |
if(array[i] == 0) { | |
pairs[i].occurance_num = 0; | |
} | |
if(array[j] == 0) { | |
pairs[j].occurance_num = 0; | |
pairs[j].useDuringCount = false; | |
} | |
} | |
pairs[i].useDuringCount = false; | |
System.out.println("--------------------"); | |
} | |
printPairsAtrray(pairs); | |
// calculate general number of duplicates (numbers whick are repeated | |
// in initial array) | |
System.out.println("Duplicates in array:"+ | |
calculateDuplicatesNumber(pairs)); | |
} | |
private static void initializePairsAtrray(Pair[] pairs, int[] array) { | |
for(int i=0;i<pairs.length;i++) { | |
Pair p = new Pair(); | |
p.occurance_num = 1; | |
p.value = array[i]; | |
p.useDuringCount = true; | |
pairs[i] = p; | |
} | |
} | |
private static void printPairsAtrray(Pair[] pairs) { | |
System.out.println("--------------------"); | |
for(int i=0;i<pairs.length;i++) { | |
System.out.println("pairs["+i+"].occurance_num="+pairs[i].occurance_num); | |
System.out.println("pairs["+i+"].value="+pairs[i].value); | |
System.out.println("pairs["+i+"].useDuringCount="+pairs[i].useDuringCount); | |
System.out.println("--------------------"); | |
} | |
} | |
private static int calculateDuplicatesNumber(Pair[] pairs) { | |
System.out.println("-------------------- Duplicates:"); | |
int duplicates_num = 0; | |
for(int i=0;i<pairs.length;i++) { | |
if(pairs[i].occurance_num > 1) { | |
duplicates_num++; | |
System.out.println("number: "+pairs[i].value+" occurance_num " + pairs[i].occurance_num); | |
} | |
} | |
return duplicates_num; | |
} | |
} | |
class Pair { | |
int value; | |
int occurance_num; | |
boolean useDuringCount; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment