原题
给你一个没有排序的数组,请将原数组就地重新排列满足如下性质
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]