Solving Leetcode Interviews in Seconds with AI: Rearrange Array Elements by Sign
Introduction
In this blog post, we will explore how to solve the LeetCode problem "2149" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like Chatmagic, we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.
Problem Statement
You are given a 0-indexed integer array nums of even length consisting of an equal number of positive and negative integers. You should return the array of nums such that the the array follows the given conditions: Every consecutive pair of integers have opposite signs. For all integers with the same sign, the order in which they were present in nums is preserved. 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. It is not required to do the modifications in-place.
Explanation
Here's a breakdown of the solution:
- Separate Positives and Negatives: Create two separate lists to store the positive and negative numbers from the input array while preserving their original order.
- Interleave: Create a new result array and populate it by alternating elements from the positive and negative lists, starting with a positive number.
Return: The interleaved array which satisfies the problem conditions.
Runtime Complexity: O(n), where n is the length of the input array.
- Storage Complexity: O(n), due to the creation of new lists for positive numbers, negative numbers, and the result.
Code
def rearrangeArray(nums):
"""
Rearranges an array of integers such that consecutive pairs have opposite signs,
the order of same-signed integers is preserved, and the array starts with a positive integer.
Args:
nums: A list of integers with an equal number of positive and negative integers.
Returns:
A new list with the rearranged elements.
"""
positives = []
negatives = []
for num in nums:
if num > 0:
positives.append(num)
else:
negatives.append(num)
result = []
for i in range(len(nums) // 2):
result.append(positives[i])
result.append(negatives[i])
return result