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