Python程式:對所有偶數和奇數分別進行升序和降序排序
假設我們有一個名為 nums 的數字列表,我們需要對陣列進行排序,並保持以下標準:
- 偶數按升序排序
- 奇數按降序排序
- 偶數和奇數的相對位置不能改變。
因此,如果輸入類似於 [9, 14, 12, 91, -4, 5],則輸出將為 [91, -4, 12, 9, 14, 5]
為了解決這個問題,我們將遵循以下步驟:
- evens := nums 陣列中偶數項的列表
- odds := nums 陣列中奇數項的列表
- 對列表 evens 進行排序
- even_i := 0, odd_i := 0
- 對於 index 從 0 到 nums 大小的範圍,執行以下操作:
- 如果 nums[index] 模 2 等於 0,則
- nums[index] := evens[even_i]
- even_i := even_i + 1
- 否則,
- nums[index] := odds[odd_i]
- odd_i := odd_i + 1
- 如果 nums[index] 模 2 等於 0,則
- 返回 nums
讓我們看看下面的實現,以便更好地理解:
示例
class Solution: def solve(self, nums): evens = [num for num in nums if num % 2 == 0] odds = [num for num in nums if num % 2 != 0] evens.sort() odds.sort(reverse=True) even_i = 0 odd_i = 0 for index in range(len(nums)): if nums[index] % 2 == 0: nums[index] = evens[even_i] even_i += 1 else: nums[index] = odds[odd_i] odd_i += 1 return nums ob = Solution() print(ob.solve([9, 14, 12, 91, -4, 5]))
輸入
[9, 14, 12, 91, -4, 5]
輸出
[91, -4, 12, 9, 14, 5]
廣告