lintcode(144)交错正负数

来源:互联网 发布:php self this区别 编辑:程序博客网 时间:2024/05/21 14:50

描述:

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

样例:

给出数组[-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        int start = 0;        int len = A.length;        int end = len - 1;        int count = 0;        for(int i =0;i<len;i++){            if(A[i] > 0){                count++;            }        }        boolean flag = false;        if(count > len/2){            flag = true;        }        while(start < len){            end = len - 1;            if(!flag){                while(len > start){                    if(A[end] < 0){                        int temp = A[start];                        A[start] = A[end];                        A[end] = temp;                        flag = true;                        start++;                        break;                    }else{                        end--;                    }                }            }else{                while(len > start){                    if(A[end] > 0){                        int temp = A[start];                        A[start] = A[end];                        A[end] = temp;                        flag = false;                        start++;                        break;                    }else{                        end--;                    }                }            }        }   }}


0 0
原创粉丝点击