Description
You are given a 0-indexed integer array nums. Rearrange the values of nums according to the following rules:
- Sort the values at odd indices of 
numsin non-increasing order.<ul> <li>For example, if <code>nums = [4,<strong><u>1</u></strong>,2,<u><strong>3</strong></u>]</code> before this step, it becomes <code>[4,<u><strong>3</strong></u>,2,<strong><u>1</u></strong>]</code> after. The values at odd indices <code>1</code> and <code>3</code> are sorted in non-increasing order.</li> </ul> </li> <li>Sort the values at <strong>even indices</strong> of <code>nums</code> in <strong>non-decreasing</strong> order. <ul> <li>For example, if <code>nums = [<u><strong>4</strong></u>,1,<u><strong>2</strong></u>,3]</code> before this step, it becomes <code>[<u><strong>2</strong></u>,1,<u><strong>4</strong></u>,3]</code> after. The values at even indices <code>0</code> and <code>2</code> are sorted in non-decreasing order.</li> </ul> </li> 
Return the array formed after rearranging the values of nums.
Β
Example 1:
Input: nums = [4,1,2,3] Output: [2,3,4,1] Explanation: First, we sort the values present at odd indices (1 and 3) in non-increasing order. So, nums changes from [4,1,2,3] to [4,3,2,1]. Next, we sort the values present at even indices (0 and 2) in non-decreasing order. So, nums changes from [4,1,2,3] to [2,3,4,1]. Thus, the array formed after rearranging the values is [2,3,4,1].
Example 2:
Input: nums = [2,1] Output: [2,1] Explanation: Since there is exactly one odd index and one even index, no rearrangement of values takes place. The resultant array formed is [2,1], which is the same as the initial array.
Β
Constraints:
1 <= nums.length <= 1001 <= nums[i] <= 100
Solution
Python3
class Solution:
    def sortEvenOdd(self, nums: List[int]) -> List[int]:
        n = len(nums)
        odd, even = [], []
        
        for i, x in enumerate(nums):
            if i & 1:
                odd.append(x)
            else:
                even.append(x)
        
        odd.sort(key = lambda x: -x)
        even.sort()
        
        res = [-1] * n
        index = 0
        
        for i in range(0, n, 2):
            res[i] = even[index]
            index += 1
        
        index = 0
        
        for i in range(1, n, 2):
            res[i] = odd[index]
            index += 1
        
        return res