# 324. Wiggle Sort II

Python wiggle sort摆动排序算法详解及源码 此外,算法只能保证相邻元素满足条件,无法保证远距离的元素满足条件。另外,算法的时间复杂度是O(n),其中n是数组的长度,因此算法的效率较高。另外,算法的时间复杂度是O(n),其中n是数组的长度,因此算法的效率较高。另外,算法的时间复杂度是O(n),其中n是数组的长度,因此算法的效率较高。另外,算法的时间复杂度是O(n),其中n是数组的长度,因此算法的效率较高。另外,算法的时间复杂度是O(n),其中n是数组的长度,因此算法的效率较高。另外,算法的时间复杂度是O(n),其中n是数组的长度,因此算法的效率较高。 阅读详情

标签(空格分隔): leetcode



1. 原题

Given an unsorted array nums, reorder it such that nums[0] < nums1 > nums[2] < nums[3]….

Example:
(1) Given nums = [1, 5, 1, 1, 6, 4], one possible answer is [1, 4, 1, 5, 1, 6].
(2) Given nums = [1, 3, 2, 2, 3, 1], one possible answer is [2, 3, 1, 3, 1, 2].

Note:
You may assume all input has valid answer.

Follow Up:
Can you do it in O(n) time and/or in-place with O(1) extra space?

Credits:
Special thanks to @dietpepsi for adding this problem and creating all test cases.

2. 分析:

  • 只要输出一种满足以上需求的数组就可以
  • 排序之后, 只要按中位数分为2组,比如:[1,2,3,4,5,6,7,8] ==>
    [1,2,3,4], [5,6,7,8], 然后按照顺序组合[1, 5], [2, 6], [3, 7], [4, 8]。然后就可以得到满足的数组:[1,5,2,6,3,7,4,8]。当出现奇数长度的数组的时候, 比如原来的数组加上一个5, 那么就可以在最后补上5变成[1,5,2,6,3,7,4,8,5]
  • 找到中位数的下一位: A[(len - 1)/2 + 1]
    这一位到数组结尾都大于对称位的数

3. 需要注意的一些细节

  • 在第二点的分析中有一点错误, 就是需要从后往前填数,不能从前往后

    比如: [4,5,5,6]正确输出应该是[5,6,5,4]
    按照分析中的算法, 结果应该是[4,5] + [5,6] ==> [4,5,5,6]
    假设我们根据 len的奇偶和下标 i 的奇偶来判断,当 len 为偶数的时候, 先填大的部分,再填小的部分 [5, 6] + [4, 5] ==> [5, 4, 6, 5], 那么就不符合要求了。

  • 从后往前填, 在开始的时候,如果len是一个奇数, 需要先在后面填小的,这样中位数就会填在第一位, 中位数的下一位是大于他的数

4. 代码


void wiggleSort(vector<int>& nums) {
    vector<int> sorted(nums);
    sort(sorted.begin(), sorted.end());
    for (int i=nums.size()-1, j=0, k=i/2+1; i>=0; i--)
        nums[i] = sorted[i&1 ? k++ : j++];
}
C/C++ Wiggle Sort摆动排序算法详解及源码 Wiggle Sort摆动排序算法是一种可以将数组重新排列成摆动序列的排序算法。在摆动序列中,相邻元素的大小关系轮流改变,即元素a[i]和a[i+1]满足 a[i] < a[i+1],然后 a[i+1] > a[i+2],以此类推。首先,它并不保证输出的是唯一解,可能存在多个满足摆动序列条件的排列方式。其次,算法可能导致一些元素之间的相对顺序被改变,这可能导致问题,特别是如果需要保持相对顺序的话。Wiggle Sort摆动排序算法的优点是简单易懂,时间复杂度为O(n),其中n是数组的长度。 阅读详情

相关推荐

Python编程:实现摆动排序算法(完整源码)

摆动排序(Wiggle Sort)是一种在数组中重新排序使得相邻元素不同的算法。具体来说,对于任意一个满足条件的数组,如果奇数位置的元素小于等于它的相邻元素,或者偶数位置的元素大于等于它的相邻元素,那么这个数组就是“摆动”的。然后我们遍历数组中的每个奇数位置,并将当前位置的元素和其相邻的元素交换。例如,可以在游戏中使用该算法来生成随机的弹球运动路径,或在股票交易中使用该算法来预测未来的趋势。可以看出,我们的wiggle_sort函数成功实现了摆动排序算法,并得到了正确的结果。

qq_39605374的博客 311

Wiggle Sort

Given an unsorted array nums, reorder it in-place such that nums[0] = nums[2] . For example, given nums = [3, 5, 2, 1, 6, 4], one possible answer is [1, 6, 2, 5, 3, 4]. 思路:这题主要在观察规律,并且证明算法的可行性。 n

leetcode 解题思路 418

C++实现摆动排序算法——让数据“摆起来”

在这个排序过程中,首先找到第一个元素3,将5与它交换,形成3 5,然后将2与5交换,形成3 5 2。接着,将6与2交换,形成3 5 2 6,然后将1与6交换,形成3 5 2 6 1。具体来说,对于一组无序的数字序列,通过摆动排序算法所得到的结果,在交替上升和下降的过程中最终呈现出一个波浪形的走势。C++语言提供了许多用于数组排序的函数,例如sort()、qsort()等,但是它们只能按照从小到大或从大到小的顺序排列,无法满足摆动排序的需要。本文详细介绍了C++实现摆动排序算法的方法,并提供了相应的源代码。

HackVibe的博客 295

LeetCode #324 Wiggle Sort II

Problem Description Given an unsorted array nums, reorder it such that nums[0] < nums[1] > nums[2] < nums[3]…. Example: (1) Given nums = [1, 5, 1, 1, 6, 4], one possible answer is [1, 4, 1, 5, 1, 6].

zhengzaishen的博客 270

Token算力工厂建设方案:从GPU集群到计量计费的全链路设计

在AI应用从“租核”走向“买Token”的范式转换中,算力交付的核心指标已不再是vCPU或GPU实例,而是单位时间内的Token产出量与单Token成本。这一变化推动基础设施从资源租赁向计件生产演进,要求GPU集群、推理引擎、调度系统、计量计费等模块像工厂产线一样协同运转。本文从硬件异构混部、存储网络设计、推理引擎调优、Token网关与配额管理、稳定性治理等维度,系统拆解如何构建一座可量化、可计费、可扩展的Token算力工厂,并给出分三期落地的推进节奏,帮助架构师与技术管理者在AI基础设施建设中实现成本可控

weixin_29095587的博客 262

【水文】calico-node 启动失败 Init:CrashLoopBackOff

Defaulted container "calico-node" out of: calico-node, upgrade-ipam (init), install-cni (init), mount-bpffs (init) Error from server (BadRequest): container "calico-node" in pod "calico-node-4j7td" is waiting to start: PodInitializing

大健的日常的博客 1万+

LeetCode #324 - Wiggle Sort II

题目描述: Given an unsorted array nums, reorder it such that nums[0] &lt; nums[1] &gt; nums[2] &lt; nums[3].... Example 1: Input: nums = [1, 5, 1, 1, 6, 4] Output: One possible answer is [1, 4, 1, 5,...

LawFile的博客 282

如何用DETR(detection transformer)训练自己的数据集

DETR(detection transformer)简介 DETR是Facebook AI的研究者提出的Transformer的视觉版本,是CNN和transformer的融合,实现了端到端的预测,主要用于目标检测和全景分割。 DETR的Github地址:link

weixin_50233398的博客 3万+

[Leetcode] 324. Wiggle Sort II 解题报告

题目: Given an unsorted array nums, reorder it such that nums[0] nums[2] . Example: (1) Given nums = [1, 5, 1, 1, 6, 4], one possible answer is [1, 4, 1, 5, 1, 6].  (2) Given nums = [1, 3

魔豆(Magicbean)的博客 953

VFIO框架源码分析(二十一)- IOMMUFD 模式下的 DMA 映射机制

在虚拟化 I/O 的世界里,无论上层管理面(如对象模型、设备绑定)如何重构,数据面最核心的任务始终未变——DMA 映射(DMA Mapping)。即如何建立 Guest Physical Address (GPA) 到 Host Physical Address (HPA) 的映射关系,并将其填入 IOMMU 的硬件页表中,使得直通设备能够正确访问虚拟机内存。在 Legacy VFIO (Type1) 时代,这一职责由承担,它通过ioctl 操作 Container。

qq_36071928的博客 1007

论文理解【LLM-OR】—— 【PaMOP】Guiding Large Language Models in Modeling Optimization Problem

针对 LLM 求解运筹优化任务,PaMOP 通过约束划分树分离子问题,实现复杂优化问题的分块建模,并结合求解器反馈与反向翻译一致性检查迭代纠错,降低子任务复杂度,提升可执行率与建模准确性。

佚失的诗篇 1006

324. Wiggle Sort II

题目 Given an unsorted array nums, reorder it such that nums[0] &lt; nums[1] &gt; nums[2] &lt; nums[3].... Example: (1) Given nums = [1, 5, 1, 1, 6, 4], one possible answer is [1,...

分享人工智能学习心得与实践经验,探讨应用场景,见证变革与进步 531

机器学习——笔记整理(原理、python代码)——反反复复,出精活!

回顾知识,检查自我,开拓新域。 机器学习1.监督学习 机器学习简介: 机器学习是实现人工智能的手段,其主要研究内容是如何利用数据或经验进行学习,改善具体算法的性能。 多领域交叉,涉及概率论、统计学,算法复杂度理论等多门学科 广泛应用于网络搜索、垃圾邮件过滤、推荐系统、广告投放、信用评价、欺诈检测、股票交易和医疗诊断等应用。 机器学习分类: 机器学习一般分为下面几种类别 监督学习 ( Supervised Learning) 无监督学习 ( Unsupervised Learning) 强化学习(

weixin_45666566的博客 6486

LeetCode(324):摆动排序 II Wiggle Sort II(Java)

2019.9.25 #程序员笔试必备# LeetCode 从零单刷个人笔记整理(持续更新) 先排序数组,然后降序穿插(小数在后的顺序对)。 例如[1,2,4,4,4,6],穿插成[4,6,2,4,1,4] 传送门:摆动排序 II Given an unsorted array nums, reorder it such that nums[0] < nums[1] > nums[2...

NJU_ChopinXBP的博客 302

中心对数比变换(Centered Log Ratio Transformation,CLR)的原理及scikit-bio介绍

中心对数比变换(Centered Log Ratio Transformation,CLR)是一种数据预处理方法,常用于成分数据分析领域。在成分数据中,各成分之间通常存在一定的约束关系,比如它们的和为固定值等,中心对数比变换可以有效地处理这种具有特殊约束的数据。官方文档scikit-bio是一个在Python3中处理生物数据的库成分统计 (skbio.stats.composition )模块中的,此函数将组合从Aitchison几何体转换到真实空间。这个clr。

RECORD LEARN PROGRESS 1万+

dummy机械臂代码学习(六)

CLI-Tool文件夹下又包含四个子文件夹,以及一个gitignore文件、一个run_shell.py的python文件、一个run.bat文件和一个zadig exe文件。库解析命令行参数,并根据不同的命令执行相应的操作。Zadig是一个用于Windows操作系统的开源工具,它的主要功能是安装和配置USB驱动程序。的目的呢就是确保在版本控制过程中,不必要的或自动生成的文件被忽略掉,来保持代码仓库的干净和整洁。,DummyStudio的软件作者已放在GitHub,我们主要看CLI-Tool文件夹就行。

jumaohhh的博客 1432

[leetcode]324. Wiggle Sort II

题目链接:https://leetcode.com/problems/wiggle-sort-ii/#/description Given an unsorted array nums, reorder it such that nums[0] nums[2] . Example: (1) Given nums = [1, 5, 1, 1, 6, 4], one possi

xiaocong1990的博客 426

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【死磕算法之1刷leetcode】——324 Wiggle Sort摆动序列2

题目描述 Given an unsorted array nums, reorder it such that nums[0] &lt; nums[1] &gt; nums[2] &lt; nums[3]… Example: Example 1: Input: nums = [1, 5, 1, 1, 6, 4] Output: One possible answer is [1, 4, 1, 5,...

gulaixiangjuejue的博客 284

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LeetCode 324. Wiggle Sort II

LeetCode 题解

real_lisa的博客 204

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Leetcode summary: wiggle problem

775. Global and Local Inversions We have some permutation A of [0, 1, …, N - 1], where N is the length of A. The number of (global) inversions is the number of i < j with 0 <= i < j < N an...

只为分享 171

#324. 摆动排序 II

int comp(const void *a, const void *b) { return *(int *)a - *(int *)b; } void wiggleSort(int* nums, int numsSize){ if(numsSize <= 1) return; int *copy = (int *)malloc(sizeof(int) * numsSize); memcpy(copy, nums, sizeof(int) * numsSize);..

Haku_yyf的博客 200

【桶排序】leetcode324.摆动排序II

题目: 给你一个整数数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]… 的顺序。 你可以假设所有输入数组都可以得到满足题目要求的结果。 解答: class Solution: def wiggleSort(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead.

jqq125的博客 264

leetcode:324. 摆动排序 II【简单找规律 +排序】

分析 先排序 然后分前后两半 奇数位就是前一半倒序 偶数位就是后一半倒序 ac code class Solution: def wiggleSort(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ n = len(nums) if n == 1: r.

小楼一夜听春雨 407

欢迎使用优快云-markdown编辑器

leetcode | 324. Wiggle Sort II一、问题描述 链接:https://leetcode.com/problems/wiggle-sort-ii/#/descriptionGiven an unsorted array nums, reorder it such that nums[0] < nums[1] > nums[2] < nums[3]….Example: (1

cosgns的专栏 255
上一篇: 667. Beautiful Arrangement II
下一篇: 5. Longest Palindromic Substring(最长回文子串)
lifi_sysu
博客等级 码龄9年 0粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值