Suppose arr[]
= {2, 3, 15, 23, 12, 13, 19, -10, 100}
First
smallest element is -10 and second smallest element is 2.
import java.util.ArrayList; import java.util.List; import java.util.Objects; public class ArrayUtil { public static List<Integer> getSmallestElements(int arr[]) { Objects.nonNull(arr); List<Integer> myList = new ArrayList<>(); if (arr.length < 2) return myList; int firstMin = arr[0]; int secondMin = arr[1]; if (firstMin > secondMin) { int temp = firstMin; firstMin = secondMin; secondMin = temp; } for (int i = 2; i < arr.length; i++) { if (arr[i] < secondMin) { if (arr[i] < firstMin) { secondMin = firstMin; firstMin = arr[i]; continue; } secondMin = arr[i]; } } myList.add(firstMin); myList.add(secondMin); return myList; } }
Following is
the junit test case.
import static org.junit.Assert.*; import java.util.List; import org.junit.Test; public class ArrayUtilTest { @Test public void test1() { int arr1[] = { 2, 3, 15, 23, 12, 13, 19, -10, 100 }; int arr2[] = { -10, -100 }; List<Integer> expected1 = ArrayUtil.getSmallestElements(arr1); List<Integer> expected2 = ArrayUtil.getSmallestElements(arr2); assertEquals(expected1.get(0), new Integer(-10)); assertEquals(expected1.get(1), new Integer(2)); assertEquals(expected2.get(0), new Integer(-100)); assertEquals(expected2.get(1), new Integer(-10)); } }
No comments:
Post a Comment