Code360 powered by Coding Ninjas X Code360 powered by Coding Ninjas X
Last Updated: 13 Nov, 2020

Rearrange Alternatively

Asked in companies
Paytm (One97 Communications Limited)IBMAccenture

Problem statement

Given an array arr of size N containing positive and negative integers. Arrange the array alternatively such that every non-negative integer is followed by a negative integer and vice-versa.

The number of positive integers and negative integers may not be equal. In such cases, add the extra integers at the end.
For Example:
For array {4, -9, -2, 6, -8}, the output will be {-9, 4, -2, 6, -8}

For array {1, 2, 3, -5}, the output will be {-5, 1, 2, 3}   
Input format:
The first line contains an integer 'T' which denotes the number of test cases or queries to be run. Then, the T test cases follow.

The first line of each test case or query contains an integer 'N' representing the size of the array (arr).

The second line contains 'N' single space-separated integers, representing the elements in the array.
Output format:
For each test case, the output is “Valid” if the rearrangement is valid otherwise, “Invalid”, without quotes.


You do not need to print anything, it has already been taken care of. Just implement the given function.

For a single array, multiple solutions may be possible, just rearrange the array in any one possible way.  
1 <= T <= 10 
1 <= N <= 10^5
Sum of N over all test cases does not exceeds 10^5. 
-(10^9) <= arr[i] <= (10^9) 

Time limit: 1 second


01 Approach

  • First off, think of your own condition according to which you want to rearrange the array. Let’s say negatives at even indices and positives at odd indices.
  • Now, traverse the given array from start to end:
    Once the condition fails i.e. we find a wrong positioned element, say wrongPositioned:

    We check for the next element having an opposite sign to the wrongPositioned element, say, correct.

    For example: In the case of array [ -2, -3, -4, -5, 6, 8 ] and above told condition (Point 1), the integer ‘-3’ is at the wrong position. Thus, we search for the first element after ‘-3’ with an opposite sign. In the case of this example, that element is ‘6’. 

    Now, we right shift the subarray from wrongPositioned to correct (both inclusive) and place the correct element at the place of wrongPositioned element. 

    In the case of the above example, we right shift the subarray [ -3, -4, -5, 6 ] and update -3 with 6. This makes the array [ -2, 6, -3, -4, -5, 8 ].
  • Note: 
    Initial array (A) = [ -2, -3, -4, -5, 6, 8 ]
    Updated array = [ -2, 6, -3, -4, -5, 8 ]
    wrongPositioned = -3 = A[ 1 ]
    Correct = 6 = A[ 4 ]

    When we perform the steps told in the above point, we satisfy condition property for 2 indices:
    -> A[ 1 ] becomes 6, odd index and a positive integer.
    -> A[ 2 ] becomes -3 even index and negative integer.