##### Welcome to Subscribe On Youtube

Formatted question description: https://leetcode.ca/all/2164.html

# 2164. Sort Even and Odd Indices Independently (Easy)

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`nums`

in**non-increasing**order.- For example, if
`nums = [4,`

before this step, it becomes,2,__1__]**3**`[4,`

after. The values at odd indices,2,**3**]__1__`1`

and`3`

are sorted in non-increasing order.

- For example, if
- Sort the values at
**even indices**of`nums`

in**non-decreasing**order.- For example, if
`nums = [`

before this step, it becomes,1,**4**,3]**2**`[`

after. The values at even indices,1,**2**,3]**4**`0`

and`2`

are sorted in non-decreasing order.

- For example, if

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,,2,1] to [4,3,2,3]. Next, we sort the values present at even indices (0 and 2) in non-decreasing order. So, nums changes from [1,1,4,3] to [2,3,2,1]. Thus, the array formed after rearranging the values is [2,3,4,1].4

**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 <= 100`

`1 <= nums[i] <= 100`

**Similar Questions**:

## Solution 1.

```
// OJ: https://leetcode.com/problems/sort-even-and-odd-indices-independently/
// Time: O(NlogN)
// Space: O(N)
class Solution {
public:
vector<int> sortEvenOdd(vector<int>& A) {
vector<int> odd, even, ans;
for (int i = 0; i < A.size(); ++i) {
if (i % 2) odd.push_back(A[i]);
else even.push_back(A[i]);
}
sort(begin(odd), end(odd), greater<>());
sort(begin(even), end(even));
for (int i = 0, j = 0, k = 0; i < A.size(); ++i) {
if (i % 2) ans.push_back(odd[j++]);
else ans.push_back(even[k++]);
}
return ans;
}
};
```