Number of occurrences in array
You have declared array of positive ints and given distance. Find how many pairs there is with given distance. Ommit repeating for occurrence of many same numbers!
package com.pdb.tst; import java.util.Arrays; public class Distance { public static int distance(int a[], int k) { int result = 0; Arrays.sort(a); stringify(a); for (int i = 0; i < a.length; i++) { for (int j = i + 1; j < a.length; j++) { if (a[j] - a[i] == k) { if (i > 1) { if (a[i] - a[i - 1] != 0) { result++; } } else { result++; } } } } // System.out.println("Number of occurrences pairs with defined distance without repeating : " + result); return result; } private static void main(String[] args) { //[0 2 123 125 421 457 1234 1234 1236 3121 675878 ] int a[] = {1234, 421, 424, 2, 675878, 123, 1234, 125, 3121, 1236, 0}; int k = 0; stringify(a); distance(a, k); } private static void stringify(int a[]) { System.out.print("["); for (int i : a) { System.out.print(i + " "); } System.out.println("]"); } }
Update:
And some basic junit tests to this solution!
package com.pdb.tst; import junit.framework.TestCase; import org.junit.Test; /** * Created by Padob on 2016-02-21. */ public class DistanceTest extends TestCase { int a[]; int k; @Override protected void setUp() throws Exception { } @Override protected void tearDown() throws Exception { a = null; k = 0; } @Test public void testZeroDistance() { //given a = new int[]{2, 4, 76, 2, 4, 8}; k = 0; //when int pairsNr = Distance.distance(a, k); //then assertEquals(2, pairsNr); } @Test public void testOneDistance() { //given a = new int[]{1, 4, 2, 3, 6}; k = 1; //when int pairsNr = Distance.distance(a, k); //then assertEquals(3, pairsNr); } @Test public void testDistanceWithRepeatedValues() { //given a = new int[]{123, 125, 127, 125, 128}; k = 2; //when int pairsNr = Distance.distance(a, k); //then assertEquals(3, pairsNr); } }