LeetCode 280 [Wiggle Sort]

作者: Jason_Yuan | 来源:发表于2016-08-10 14:29 被阅读146次

原题

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

相关文章

网友评论

    本文标题:LeetCode 280 [Wiggle Sort]

    本文链接:https://www.haomeiwen.com/subject/ftkjsttx.html