LeetCode 324
Wiggle Sort II
- Problem Description:
将一个数组进行摆动排序,即满足num[0]<num[1]>num[2]<num[3]....
具体的题目信息:
https://leetcode.com/problems/wiggle-sort-ii/description/ - Example:
- Solution:
- 解题思路:先将原数组元素进行升序排列,然后从中间断开形成两个子数组A和B,依次输出两个子数组的尾部元素。可以用栈来存储,也可以直接初始化
vector<int> temp = num
来保存原数组元素。 - 编程实现:
- 解题思路:先将原数组元素进行升序排列,然后从中间断开形成两个子数组A和B,依次输出两个子数组的尾部元素。可以用栈来存储,也可以直接初始化
class Solution {
public:
void wiggleSort(vector<int>& nums) {
int i = 0;
stack<int> l;
stack<int> r;
sort(nums.begin(), nums.end());
while(i < ceil(nums.size())/2.0) {
l.push(nums[i++]);
}
while(i < nums.size()) {
r.push(nums[i++]);
}
i = 0;
while(!l.empty()&&!r.empty()) {
nums[i++] = l.top();
nums[i++] = r.top();
l.pop();
r.pop();
}
while(!l.empty()) {
nums[i++] = l.top();
l.pop();
}
while(!r.empty()) {
nums[i++] = r.top();
r.pop();
}
}
};