507-摆动排序 II

给你一个数组nums,将它重排列如下形式
nums[0] < nums[1] > nums[2] < nums[3]....

注意事项

你可以认为每个输入都有合法解

样例

给出 nums = [1, 5, 1, 1, 6, 4],一种方案为 [1, 4, 1, 5, 1, 6].
给出 nums = [1, 3, 2, 2, 3, 1],一种方案为 [2, 3, 1, 3, 1, 2].

挑战

O(N)时间复杂度 O(1)额外空间

思路

使用快排,然后调整,调整的方法是找到数组的中间的数,相当于把有序数组从中间分成两部分,然后从前半段的末尾取一个,在从后半的末尾去一个,这样保证了第一个数小于第二个数,然后从前半段取倒数第二个,从后半段取倒数第二个,这保证了第二个数大于第三个数,且第三个数小于第四个数,以此类推直至都取完

code

class Solution {
public:/*** @param nums a list of integer* @return void*/  void wiggleSort(vector<int>& nums) {// Write your code hereint size = nums.size();if (size <= 0) {return;}vector<int> temp = nums;int k = (size + 1) / 2, j = size;sort(temp.begin(), temp.end());for (int i = 0; i < size; ++i) {nums[i] = i & 1 ? temp[--j] : temp[--k];}}
};

转载于:https://www.cnblogs.com/libaoquan/p/7422426.html

lintcode-507-摆动排序 II相关推荐

  1. 【leetcode】324.摆动排序 II (四种解法,快速排序+3way-partition等,java实现)

    324. 摆动排序 II 难度中等 给定一个无序的数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序. 示例 1 ...

  2. [Swift]LeetCode324. 摆动排序 II | Wiggle Sort II

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  3. 324. Wiggle Sort II | 324. 摆动排序 II(降序穿插)

    题目 https://leetcode.com/problems/wiggle-sort-ii/submissions/ 题解 没有一次想到正确的方法,是在 WA 的测试用例的提示下,一点一点修正,才 ...

  4. LeetCode 280. 摆动排序

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

  5. C++Wiggle Sort摆动排序的实现算法(附完整源码)

    C++Wiggle Sort摆动排序的实现算法 C++Wiggle Sort摆动排序的实现算法完整源码(定义,实现,main函数测试) C++Wiggle Sort摆动排序的实现算法完整源码(定义,实 ...

  6. LintCode 6.合并排序数组 ||

    import org.junit.Test;import java.util.Arrays;public class MergeSort {/*** @param A: sorted integer ...

  7. 摆动排序leetcode324

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

  8. [Lintcode]115. Unique Paths II/[Leetcode]63. Unique Paths II

    115. Unique Paths II/63. Unique Paths II 本题难度: Easy/Medium Topic: Dynamic Programming Description Fo ...

  9. ACM练习 链表排序 II 【WA】

    注意:在OJ上提交时不要使用endl,可能会出问题.用\n代替. 描述 已知 小 g 手里有一个链表. 小 g 希望手里的链表是按照单调非减的顺序排好的. 小 g 希望链表中值相同的节点在排完序后相对 ...

  10. lintcode:合并排序数组

    题目: 合并排序数组 合并两个排序的整数数组A和B变成一个新的数组. 样例 给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6] 挑战 你能否优化你的算法,如果 ...

最新文章

  1. 【转】从源码分析Handler的postDelayed为什么可以延时?
  2. 微软柯塔娜(Cortana)的一句名言
  3. python iter 迭代函数 简介
  4. Java线程的状态转换
  5. php system 返回值127,php system 返回值 1
  6. CURL 模拟post和get请求
  7. 推荐一个CodeProject上的SlideForm控件
  8. gogs 把用户加入团队
  9. android 流量计算器,电工计算器v8.0.1_for Android 直装解锁专业版
  10. 解决kali虚拟机无法连接网络的问题
  11. OpenCV基础应用20例
  12. 作为Senior Recruiter想跟大家聊聊求职,希望对大家有所帮助~
  13. excel怎么快速判断录入银行卡号是否正确?
  14. python中matrix是什么意思_Python与线性代数——Numpy中的matrix()和array()的区别
  15. 孙振耀给职场人士的几个经典
  16. xss challenges闯关详细(6-10)
  17. 如何实现精准营销?从智能营销下手
  18. Apache 配置与应用
  19. 【Proteus仿真】【51单片机】智能电饭煲系统设计
  20. 给一个数,判断它是否是素数(质数) 质数:一个大于1的自然数只能被1和它本身整除...

热门文章

  1. 关于程序员抵制996的一些想法
  2. 第4节课第一节 Dos攻击
  3. 计算机网络2021题库
  4. Android客户端与服务器通信
  5. iPhone 快捷指令 拼接长图
  6. PDF模板查找关键字坐标
  7. [android issue解析] fd leakage cause app ANR
  8. 基于Cassandra的分布式存储数据一致性算法研究
  9. 企业估值研究到底从何处着手?
  10. 浅谈我是如何从简单的系统功能需求书写规范的需求分析说明书