【题目描述】
Given an array with positive and negative integers. Re-range it to interleaving with positive and negative integers.
Notice
You are not necessary to keep the original order of positive integers or negative integers.
给出一个含有正整数和负整数的数组,重新排列成一个正负数交错的数组。
【注】:不需要保持正整数或者负整数原来的顺序。
【题目链接】
www.lintcode.com/en/problem/interleaving-positive-and-negative-numbers/
【题目解析】
1.先用parition把数组分为左边为负数,右边为正数。
2.如果负数比较多,把多余的负数与尾部的值交换。(这样多余的数会放在数组的末尾)
3. left指向数组的左边,right指向数组的右边减掉多余的数。
4.第3步中,根据是正数多,还是负数多,起始位置要变一下。正数多,我们希望开始的是正数:
例如3 -1 2。负数多,我们希望开始的是负数,如-1 3 -2
5.不断交换left, right指针,并一次前进步长2.直到left, right相遇。
【参考答案】
www.jiuzhang.com/solutions/interleaving-positive-and-negative-numbers/