Lintcode144 Interleaving Positive And Negative Numbers solution 题解

【题目描述】

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/

你可能感兴趣的:(Lintcode144 Interleaving Positive And Negative Numbers solution 题解)