lintcode-交错正负数-144

给出一个含有正整数和负整数的数组,重新排列成一个正负数交错的数组。


样例

给出数组[-1, -2, -3, 4, 5, 6],重新排序之后,变成[-1, 5, -2, 4, -3, 6]或者其他任何满足要求的答案

注意

不需要保持正整数或者负整数原来的顺序。

挑战

原地完成,没有额外的空间

class Solution {
public:
    void rerange(vector &vec){
            int  i=0,j=1; 
	    int  count=0,n=vec.size();
	    bool flag=false;
	    for(auto e:vec)
	        if(e<0)
		    ++count;   //记录负数的个数
	    if(n-count>count)  
	        flag=true;
	    
            //当正数个数大于负数个数时,第一个元素一定是正数,此时i和j分别表示正数行(下标为偶数)
            //和负数行(下标为奇数)
	    if(flag) while(i0){
		        int findj=j+1;
			    while(findj0)
				    findj+=2;
			    if(findj0){
		    int findi=i+1;
		    while(findi0)
		        findi+=2;
		    if(findi


你可能感兴趣的:(Lintcode)