其他分享
首页 > 其他分享> > LeetCode/摆动排序

LeetCode/摆动排序

作者:互联网

给你一个整数数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序。
你可以假设所有输入数组都可以得到满足题目要求的结果。

1. 排序后穿插赋值

class Solution {
public:
    void wiggleSort(vector<int>& nums) {
        int n = nums.size();
        vector<int> arr = nums;//需要使用辅助空间,这里无法直接映射
        sort(arr.begin(), arr.end());//排序
        int left = (n - 1) / 2;//left和right分别是两数组末位置
        for (int i = 0 , right = n - 1; i < n; i += 2, left--, right--) {//两数组穿插赋值,从后往前
            nums[i] = arr[left];//第一个值赋小的,同时可以赋奇数数组的最后一个数
            if (i + 1 < n)  nums[i + 1] = arr[right];//防止溢出
        }
    }
};

标签:arr,right,nums,int,数组,摆动,排序,LeetCode,left
来源: https://www.cnblogs.com/929code/p/16418133.html