## The challenge

You are given an array of unique elements, and your task is to rearrange the values so that the first max value is followed by the first minimum, followed by second max value then second min value, etc.

For example:

 ``````1 `````` ``````solve([15,11,10,7,12]) = [15,7,12,10,11] ``````

The first max is `15` and the first min is `7`. The second max is `12` and the second min is `10` and so on.

## The solution in Java code

Option 1:

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 `````` ``````import java.util.*; class Solution{ public static int[] solve (int[] arr){ Arrays.sort(arr); int[] solutionArray = new int[arr.length]; for(int i = 0; i < arr.length; i++){ solutionArray[i] = i % 2 == 0 ? arr[arr.length - i/2 - 1] : arr[i/2]; } return solutionArray; } } ``````

Option 2:

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 `````` ``````import java.util.*; class Solution{ public static int[] solve (int[] arr){ List temp = new ArrayList(); Arrays.sort(arr); for (int i = 0, j = arr.length - 1; i <= j; ++i, --j) { if (i != j) temp.add(arr[j]); temp.add(arr[i]); } return temp.stream().mapToInt(i -> i).toArray(); } } ``````

Option 3:

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 `````` ``````import java.util.stream.IntStream; class Solution { public static int[] solve(int[] arr) { int[] sorted = IntStream.of(arr).sorted().toArray(); int[] result = new int[arr.length]; for (int i = 0, j = arr.length - 1, f = -1; i < arr.length;) { result[i] = sorted[j]; j = (j + arr.length + (f *= -1) * (++i)) % arr.length; } return result; } } ``````

## Test cases to validate our solution

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 `````` ``````import org.junit.Test; import static org.junit.Assert.assertArrayEquals; import org.junit.runners.JUnit4; public class SolutionTest{ @Test public void basicTests(){ assertArrayEquals(new int[]{15,7,12,10,11},Solution.solve(new int[]{15,11,10,7,12})); assertArrayEquals(new int[]{15,7,12,10,11},Solution.solve(new int[]{15,11,10,7,12})); assertArrayEquals(new int[]{15,7,12,10,11},Solution.solve(new int[]{15,11,10,7,12})); } } ``````