给出一个含有正整数和负整数的数组,重新排列成一个正负数交错的数组。
注意事项
不需要保持正整数或者负整数原来的顺序。
样例
给出数组[-1, -2, -3, 4, 5, 6]
,重新排序之后,变成[-1, 5, -2, 4, -3, 6]
或者其他任何满足要求的答案
挑战
原地完成,没有额外的空间
class Solution {
/**
* @param A: An integer array.
* @return: void
*/
public void rerange(int[] A) {
// write your code here
if(A.length==0){
return;
}
int positive=0;
int negative=0;
for(int i=0;i<A.length;i++){
if(A[i]>0){
positive++;
}else{
negative++;
}
}
if(Math.abs(negative-positive)>1)
return;
Arrays.sort(A);
if(positive>negative){
int i=0;
int j=A.length-2;
while(i<j){
int temp=A[i];
A[i]=A[j];
A[j]=temp;
i=i+2;
j=j-2;
}
}else if(positive==negative){
int i=0;
int j=A.length-1;
while(i<j){
int temp=A[i];
A[i]=A[j];
A[j]=temp;
i=i+2;
j=j-2;
}
}else{
int i=1;
int j=A.length-1;
while(i<j){
int temp=A[i];
A[i]=A[j];
A[j]=temp;
i=i+2;
j=j-2;
}
}
}
}