zoukankan      html  css  js  c++  java
  • lintcode:交错正负数

    交错正负数

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

     注意事项

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

    样例

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

    挑战

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

    解题

    1.快速排序

    2.定义新数组,交叉选取正负数放到新数组

    class Solution {
        /**
         * @param A: An integer array.
         * @return: void
         */
        public void rerange(int[] A) {
            // write your code here
            if(A == null ||A.length == 0)
                return;
            int low = 0;
            int high = A.length - 1;
            while(low < high){
                // 负数放前
                if( low < high && A[low] <0 )
                    low+=1;
                // 正数放后
                if( low < high && A[high] >0 )
                    high-=1;
                if(low < high){
                    int tmp = A[low];
                    A[low] = A[high];
                    A[high] = tmp;
                }
            }
            int flag = 0;
            if(A.length -low > low)// 正数大于负数
                flag =1;
            int m = 0,n = low;
            int[] B = new int[A.length];
            for(int i = 0;i < B.length;i++){
                if( flag==0){
                    if(i%2==0)
                    B[i]= A[m++];
                else
                    B[i]= A[n++];   
                }else{
                    if(i%2==0)
                    B[i]= A[n++];
                else
                    B[i]= A[m++];
                }
    
            }
    
            for(int i =0;i<A.length;i++)
                A[i] = B[i];
       }
    }
  • 相关阅读:
    初始面向对象
    python之路——迭代器和生成器
    函数进阶
    python之路——初识函数
    实现css两端对齐
    http
    background-size
    call和apply的区别
    js兼容性
    面试题
  • 原文地址:https://www.cnblogs.com/bbbblog/p/5378407.html
Copyright © 2011-2022 走看看