ReOrder Array
{ N1, N2, N3, …, N2k } → { N1, Nk+1, N2, Nk+2, N3, Nk+3, … , Nk, N2k }
{ N1, N2, N3, …, N2k+1 } → { N1, Nk+1, N2, Nk+2, N3, Nk+3, … , Nk, N2k, N2k+1 }{ 1, 2, 3, 4, 5, 6} → { 1, 4, 2, 5, 3, 6 }
{ 1, 2, 3, 4, 5, 6, 7, 8 } → { 1, 5, 2, 6, 3, 7, 4, 8 }
{ 1, 2, 3, 4, 5, 6, 7 } → { 1, 4, 2, 5, 3, 6, 7 }Basic Idea:
public class Solution { public int[] reorder(int[] array) { if (array == null || array.length < 4) return array; int[] ret = new int[array.length]; int i = 0, j = array.length / 2; while (i < array.length / 2) { ret[2 * i] = array[i]; ret[2 * i + 1] = array[j]; i++; j++; } if (j < array.length) ret[ret.length - 1] = array[array.length - 1]; return ret; } }