原題
給你一個沒有排序的數組,請將原數組就地重新排列滿足如下性質
nums[0] <= nums[1] >= nums[2] <= nums[3]....
樣例
給出數組為 nums = [3, 5, 2, 1, 6, 4] 一種輸出方案為[1, 6, 2, 5, 3, 4]
解題思路
- 根據題意,搖擺排序的定義有兩部分:
- 如果i是奇數,nums[i] >= nums[i - 1]
- 如果i是偶數,nums[i] <= nums[i - 1]
- 所以遍歷一遍,將錯誤的進行調整就可以了
完整代碼
class Solution(object):
"""
@param {int[]} nums a list of integer
@return nothing, modify nums in-place instead
"""
def wiggleSort(self, nums):
# Write your code here
for i in xrange(1, len(nums)):
if i % 2 == 1 and nums[i] < nums[i - 1] or \
i % 2 == 0 and nums[i] > nums[i - 1]:
nums[i], nums[i - 1] = nums[i- 1], nums[i]