跳转到内容

280. Wiggle Sort 摆动排序


题目地址:https://leetcode-cn.com/problems/wiggle-sort/

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

Example:

Input: nums = [3,5,2,1,6,4]
Output: One possible answer is [3,5,1,6,2,4]

给你一个无序的数组 nums, 将该数字 原地 重排后使得 nums[0] <= nums[1] >= nums[2] <= nums[3]...

只要给出一种符合要求的结果即可,因此我们可以找出一种最简单易实现的方案就行。

先把所有的数字排序,然后交换相邻的元素就可以实现这种波浪形的数组。举例如下:

输入:[3,5,2,1,6,4]
排序:[1,2,3,4,5,6]
交换:[1,3,2,5,4,6]

C++代码如下:

class Solution {
public:
void wiggleSort(vector<int>& nums) {
const int N = nums.size();
sort(nums.begin(), nums.end());
for (int i = 1; i < N - 1; i += 2) {
swap(nums[i], nums[i + 1]);
}
}
};

2019 年 9 月 22 日 —— 熬夜废掉半条命

最近更新:

评论与交流