Given an array with positive and negative integers. Re-range it to interleaving with positive and negative integers.
Example
Given [-1, -2, -3, 4, 5, 6]
,
after re-range, it will be [-1, 5, -2, 4, -3, 6]
or any other reasonable
answer.
例:-1 -2 -3 4 5 start = 1 end = 4 -1 -2 3 4 5 start = 0, end = 3 -1 -2 3 4 start = 0, end = 3 确保占多数的一组先移动一位。
class Solution {
/**
* @param A: An integer array.
* @return: void
*/
public void rerange(int[] A) {
if(A.length <= 1) return;
Arrays.sort(A);
int start = 0, end = A.length - 1;
if(A.length % 2 != 0 && A[A.length / 2] > 0) end = A.length - 2;
if(A.length % 2 != 0 && A[A.length / 2] < 0) start = 1;
while(start < end) {
int tmp = A[start];
A[start] = A[end];
A[end] = tmp;
start += 2;
end -= 2;
}
}
}