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];//防止溢出
        }
    }
};

原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/270579.html

(0)
上一篇 2022年6月28日 08:04
下一篇 2022年6月28日 08:04

相关推荐

发表回复

登录后才能评论