給定乙個無序的陣列 nums,將它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]… 的順序。
示例 1:
輸入: nums = [1, 5, 1, 1, 6, 4]
輸出: 乙個可能的答案是 [1, 4, 1, 5, 1, 6]
示例 2:
輸入: nums = [1, 3, 2, 2, 3, 1]
輸出: 乙個可能的答案是 [2, 3, 1, 3, 1, 2]
對原陣列排序後,將小的部分放在奇數字置,大的部分放在偶數字置。
為什麼要逆序了再放? 因為小的部分的最大值,可能和大的部分最小值相同,而且小的部分數字還比大的部分數字多1個,所以可能會造成小的部分最大值和大的部分最小值挨著的情況。為了避免這種情況,用大的最大值去壓小的最大值。
例如輸入[4, 5, 5, 6]
,如果順著來,就會變成:[4, 5, 5, 6]
,但是如果逆序後再來,就得到[5, 6, 4, 5]
class
solution
:def
wigglesort
(self, nums: list[
int])-
>
none
:"""
do not return anything, modify nums in-place instead.
"""nums.sort(
) smaller_part, bigger_part = nums[:(
len(nums)+1
)//2]
, nums[
(len
(nums)+1
)//2:
] nums[::
2], nums[1:
:2]= smaller_part[::
-1], bigger_part[::
-1]
LeetCode 324 擺動排序 II
給定乙個無序的陣列nums,將它重新排列成nums 0 nums 1 nums 2 nums 3 的順序。示例 1 輸入 nums 1,5,1,1,6,4 輸出 乙個可能的答案是 1,4,1,5,1,6 示例 2 輸入 nums 1,3,2,2,3,1 輸出 乙個可能的答案是 2,3,1,3,1,2...
leetcode 324 擺動排序 II
思路 將給定陣列排序並逆序 拆分處理後的陣列,得到兩個陣列 將乙個陣列插入至另乙個陣列。4,6,5,5 1.排序 逆序 6,5,5,4 2.拆分 6,5 5,4 3.合併 5,4,6,5 4.result 5,6,4,5 def resolution nums length len nums if ...
LeetCode 324 擺動排序 II
給定乙個無序的陣列 nums,將它重新排列成 nums 0 nums 1 nums 2 nums 3 的順序。示例 1 輸入 nums 1,5,1,1,6,4 輸出 乙個可能的答案是 1,4,1,5,1,6 示例 2 輸入 nums 1,3,2,2,3,1 輸出 乙個可能的答案是 2,3,1,3,1...