给出一个含有正整数和负整数的数组,重新排列成一个正负数交错的数组。
先将正负数分别存到两个数组当中 较长的那个数组作为起始元素(下标为0)
按照奇偶将两个数组元素添加到新数组中 注意如果数组长度为奇数 需要对最后一个元素进行单独添加
public class Solution {
/*
* @param A: An integer array.
* @return: nothing
*/
public void rerange(int[] A) {
int len = A.length;
int[] pos = new int[len];
int[] neg = new int[len];
int[] temp = new int[len];
int p = 0, n = 0;
for(int i = 0; i < len; i++){
if(A[i] < 0){
pos[p++] = A[i];
}
else{
neg[n++] = A[i];
}
}
if(p > n){
temp = subfun(pos, neg, len);
}
else temp = subfun(neg, pos, len);
for(int i = 0; i < len; i++)
A[i] = temp[i];
}
public int[] subfun(int[] A, int[] B, int len){
int[] ans = new int[len];
for(int i = 0; 2 * i + 1 < len; i++){
ans[2 * i] = A[i];
ans[2 * i + 1] = B[i];
}
if(len % 2 == 1){
ans[len - 1] = A[len / 2];
}
return ans;
}
}