Wave Array Asked in: Google Adobe Amazon

 Given an array of integers, sort the array into a wave like array and return it,

In other words, arrange the elements into a sequence such that a1 >= a2 <= a3 >= a4 <= a5.....

Example

Given [1, 2, 3, 4]

One possible answer : [2, 1, 4, 3]
Another possible answer : [4, 1, 3, 2]
 

NOTE : If there are multiple answers possible, return the one thats lexicographically smallest.
So, in example case, you will return [2, 1, 4, 3]

 

Solution:

class Solution:
    # @param A : list of integers
    # @return a list of integers
    def wave(self, A):
        a=sorted(A)
        for i in range(0,len(a)-1,2):
            a[i],a[i+1]=a[i+1],a[i]
        
        return a


Solution Screenshot:



First sorting makes the list lexicographically smallest so our next step is to swap first and second elements continuously skipping 2 elements each time



Comments

Popular posts from this blog

Trouble with the Number System

Residue Arithmetic

Perfect Peak of Array