博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lintcode:交错正负数
阅读量:7082 次
发布时间:2019-06-28

本文共 1248 字,大约阅读时间需要 4 分钟。

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

 注意事项

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

样例

给出数组[-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

 

转载地址:http://khlml.baihongyu.com/

你可能感兴趣的文章
Scut游戏服务器引擎6.0.5.2发布
查看>>
帆布小球碰壁效果
查看>>
Less函数说明
查看>>
js window resize延时
查看>>
jQuery 1
查看>>
5.JSON
查看>>
小程序-TabBar点击切换
查看>>
二项堆-原理及伪代码
查看>>
C#生成二维码
查看>>
[2019.1.1]BZOJ4195 [Noi2015]程序自动分析
查看>>
hdu 1045 Fire Net
查看>>
学习c++的50条忠告(转自C++百度贴吧)
查看>>
js获取屏幕大小
查看>>
console.log是异步的吗?
查看>>
test
查看>>
AOP
查看>>
ECSHOP站内页面跳转,避免死链
查看>>
JAVA课堂作业整理一
查看>>
程序猿小白的2016—不忘初心,继续奋斗
查看>>
HDU 1502 Regular Words DP+高精度
查看>>