LeetCode 题解(273) : Wiggle Sort

来源:互联网 发布:php 房源管理系统 编辑:程序博客网 时间:2024/05/17 06:42

题目:

Given an unsorted array nums, reorder it in-place such thatnums[0] <= nums[1] >= nums[2] <= nums[3]....

For example, given nums = [3, 5, 2, 1, 6, 4], one possible answer is[1, 6, 2, 5, 3, 4].

题解:

C++版:

class Solution {public:    void wiggleSort(vector<int>& nums) {        if(nums.size() <= 1)            return;                    int i = 0, j = 1;        bool reverse = false;        while(j < nums.size()) {            if(!reverse) {                reverse = true;                if(nums[i] > nums[j]) {                    int t = nums[i];                    nums[i] = nums[j];                    nums[j] = t;                }            } else {                reverse = false;                if(nums[i] < nums[j]) {                    int t = nums[i];                    nums[i] = nums[j];                    nums[j] = t;                }            }            i++;            j++;        }    }};

Python版:

class Solution(object):    def wiggleSort(self, nums):        """        :type nums: List[int]        :rtype: void Do not return anything, modify nums in-place instead.        """        if len(nums) <= 1:            return                i, j, reverse = 0, 1, False        while i < len(nums) and j < len(nums):            if not reverse:                reverse = True                if nums[i] > nums[j]:                    nums[i], nums[j] = nums[j], nums[i]            else:                reverse = False                if nums[i] < nums[j]:                    nums[i], nums[j] = nums[j], nums[i]            i += 1            j += 1                

0 0