網站上門備案指數運算法則
難度:簡單
給你一個下標從?0?開始的整數數組?
nums
?。根據下述規(guī)則重排?nums
?中的值:
- 按?非遞增?順序排列?
nums
?奇數下標?上的所有值。
- 舉個例子,如果排序前?
nums = [4,1,2,3]
?,對奇數下標的值排序后變?yōu)?[4,3,2,1]
?。奇數下標?1
?和?3
?的值按照非遞增順序重排。- 按?非遞減?順序排列?
nums
?偶數下標?上的所有值。
- 舉個例子,如果排序前?
nums = [4,1,2,3]
?,對偶數下標的值排序后變?yōu)?[2,1,4,3]
?。偶數下標?0
?和?2
?的值按照非遞減順序重排。返回重排?
nums
?的值之后形成的數組。示例 1:
輸入:nums = [4,1,2,3] 輸出:[2,3,4,1] 解釋: 首先,按非遞增順序重排奇數下標(1 和 3)的值。 所以,nums 從 [4,1,2,3] 變?yōu)?[4,3,2,1] 。 然后,按非遞減順序重排偶數下標(0 和 2)的值。 所以,nums 從 [4,1,2,3] 變?yōu)?[2,3,4,1] 。 因此,重排之后形成的數組是 [2,3,4,1] 。示例 2:
輸入:nums = [2,1] 輸出:[2,1] 解釋: 由于只有一個奇數下標和一個偶數下標,所以不會發(fā)生重排。 形成的結果數組是 [2,1] ,和初始數組一樣。提示:
1 <= nums.length <= 100
1 <= nums[i] <= 100
題解:
class Solution:def sortEvenOdd(self, nums: List[int]) -> List[int]:odd = [] ## 奇數even = [] ## 偶數for i in range(0,len(nums)):if i % 2 == 1:odd.append(nums[i])else:even.append(nums[i])odd.sort(reverse=True)even.sort()final_res = []y = []## 判斷奇數偶數列表長度不一致時的不同處理方式if len(odd) > len(even):y.append(odd[-1])odd = odd[0:len(odd)-1]elif len(even) > len(odd):y.append(even[-1])even = even[0:len(even)-1]for a,b in zip(even,odd):final_res.append(a)final_res.append(b)final_res.append(y[0])else:for a,b in zip(even,odd):final_res.append(a)final_res.append(b)return final_res