g2101_2200.s2149_rearrange_array_elements_by_sign.readme.md Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java Show documentation
Show all versions of leetcode-in-java Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
2149\. Rearrange Array Elements by Sign
Medium
You are given a **0-indexed** integer array `nums` of **even** length consisting of an **equal** number of positive and negative integers.
You should **rearrange** the elements of `nums` such that the modified array follows the given conditions:
1. Every **consecutive pair** of integers have **opposite signs**.
2. For all integers with the same sign, the **order** in which they were present in `nums` is **preserved**.
3. The rearranged array begins with a positive integer.
Return _the modified array after rearranging the elements to satisfy the aforementioned conditions_.
**Example 1:**
**Input:** nums = [3,1,-2,-5,2,-4]
**Output:** [3,-2,1,-5,2,-4]
**Explanation:** The positive integers in nums are [3,1,2].
The negative integers are [-2,-5,-4].
The only possible way to rearrange them such that they satisfy all conditions is [3,-2,1,-5,2,-4].
Other ways such as [1,-2,2,-5,3,-4], [3,1,2,-2,-5,-4], [-2,3,-5,1,-4,2] are incorrect because they do not satisfy one or more conditions.
**Example 2:**
**Input:** nums = [-1,1]
**Output:** [1,-1]
**Explanation:** 1 is the only positive integer and -1 the only negative integer in nums.
So nums is rearranged to [1,-1].
**Constraints:**
* 2 <= nums.length <= 2 * 105
* `nums.length` is **even**
* 1 <= |nums[i]| <= 105
* `nums` consists of **equal** number of positive and negative integers.