-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSort_even_and_odd_indeces_independently.py
48 lines (37 loc) · 1.87 KB
/
Sort_even_and_odd_indeces_independently.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 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,1,2,3] before this step, it becomes [4,3,2,1] after. The values at odd indices 1 and 3 are sorted in non-increasing order.
# Sort the values at even indices of nums in non-decreasing order.
# For example, if nums = [4,1,2,3] before this step, it becomes [2,1,4,3] after. The values at even indices 0 and 2 are sorted in non-decreasing order.
# 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.
class Solution:
def sortEvenOdd(self, nums: List[int]) -> List[int]:
list_even = [nums[i] for i in range(len(nums)) if i%2 == 0]
list_odd = [nums[i] for i in range(len(nums)) if i%2 != 0]
list_even = sorted(list_even)
list_odd = sorted(list_odd, reverse=True)
tracker_even = 0
tracker_odd = 0
for i in range(len(nums)):
if i%2 == 0:
nums[i] = list_even[tracker_even]
tracker_even += 1
else:
nums[i] = list_odd[tracker_odd]
tracker_odd += 1
return nums