324. 摆动排序 II(JS实现)

JavaScript:实现wiggle sort摆动排序算法(附完整源码) 阅读详情

1 题目

给定一个无序的数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]… 的顺序。
示例 1:
输入: nums = [1, 5, 1, 1, 6, 4]
输出: 一个可能的答案是 [1, 4, 1, 5, 1, 6]
示例 2:
输入: nums = [1, 3, 2, 2, 3, 1]
输出: 一个可能的答案是 [2, 3, 1, 3, 1, 2]
说明:
你可以假设所有输入都会得到有效的结果。
进阶:
你能用 O(n) 时间复杂度和 / 或原地 O(1) 额外空间来实现吗?

链接:https://leetcode-cn.com/problems/wiggle-sort-ii

2 思路

很明显,我做这道题就是先把数组排序,然后将数组分为两部分,依次构造新数组的,题解中有O(n)的算法,其先用快速选择法,找到数组的中位数,然后将小于等于中位数的数放置在左侧,大于中位数的放置在右侧,这样就成了两部分了

3代码

/**
 * @param {number[]} nums
 * @return {void} Do not return anything, modify nums in-place instead.
 */
var wiggleSort = function(nums) {
  nums.sort((a,b) => a-b);

  let mid = nums.length % 2 === 0 ? Math.floor(nums.length / 2) : Math.floor(nums.length / 2) + 1;

  const res = [];

  let low = mid - 1;
  let high = nums.length - 1;
  while (low >= 0 && high >= mid) {
    res.push(nums[low--]);
    res.push(nums[high--]);
  }

  if (low >= 0) res.push(nums[low--]);   //从后向前进行插入
  if (high >= mid) res.push(nums[high--]);  //从后向前进行插入

  for (let i=0; i<res.length;i++) {
    nums[i] = res[i];
  }
};
【信息科学与工程学】【物理/化学和工程技术】第七十五篇 电气工程 系列三 电机学01 至此,总条目达到163 条磁路与电磁场数值方法(131–134)特殊运行状态(135–139)实验技术与标准设计细节(144–149)动态过程(150–154)至此,总条目达到213 条,全面覆盖《电机学》教材及其在电动汽车、工业机器人、家用电器、轨道交通、航空航天、船舶推进、新能源(飞轮储能、波浪发电)​ 等领域的应用,以及先进控制算法(MTPA、弱磁、MPC、EKF、三环PID)​ 和仿真技术(联合仿真、遗传算法优化、HIL)。每条均包含逐步推理的数学方程式和详细推导,可直接用于教学、科研和工程参考。 阅读详情

相关推荐

避坑指南:Zabbix poller进程100%占用的5种常见原因及解决方案

本文深入剖析了Zabbix poller进程占用率高达100%的五大常见原因,包括监控项与进程数不匹配、不可达主机资源浪费、数据库性能瓶颈、监控项配置不合理以及版本缺陷。文章提供了从系统化诊断到针对性解决方案的完整指南,并重点介绍了如何通过优化zabbix_server.conf中的StartPollers等关键参数进行有效调优,帮助运维人员从根本上解决这一经典性能问题。

7z8x2c4v6b9的博客 250

LeetCode 高级 - 摆动排序 II

高级 [排序&amp;搜索] - 摆动排序 II 给定一个无序的数组 nums,将它重新排列成 nums[0] &lt; nums[1] &gt; nums[2] &lt; nums[3]... 的顺序。 示例 1: 输入: nums = [1, 5, 1, 1, 6, 4] 输出: 一个可能的答案是 [1, 4, 1, 5, 1, 6] 示例 2: 输入: nums = [1,...

whdAlive 's blog 2001

【DeepSeek+Office/WPS】智能办公新时代的全新利器

DeepSeek是一家专注于通用人工智能技术研发的中国科技公司,其核心产品DeepSeek-R1是一款开源的推理大模型,专注于复杂任务的高效处理,支持智能对话、文本生成、语义理解、计算推理、代码生成与补全等多种应用场景。作为国产、免费、开源且强大的AI平台,DeepSeek不仅致力于为终端用户提供高质量的智能服务,还为开发者提供了一整套完善的技术解决方案,帮助他们快速构建和部署自己的智能应用。

2303_77200324的博客 2791

324. Wiggle Sort II 摆动排序 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, ...

别说话写代码的博客 385

深入解析EtherCAT通讯DS402协议下的伺服电机控制模式选择与配置

本文深入解析了EtherCAT通讯DS402协议下的伺服电机控制模式选择与配置,详细介绍了六种核心控制模式(如PPM、CSP、CSV、CST)的应用场景及实战技巧。通过EtherCAT和DS402协议的高效配合,实现工业自动化中伺服电机的精准控制,提升设备性能与稳定性。

h0i1j2k3l的博客 1174

DeepBSA实战指南:从安装到基因组分析的全流程解析

本文详细解析了DeepBSA工具从安装到基因组分析的全流程,特别介绍了其简化生物信息学分析的'一键式'操作和独家深度学习算法。通过实战案例展示了DeepBSA在信噪比处理和QTL定位上的优势,并提供了Linux和Windows系统的安装避坑指南、数据预处理技巧以及算法选择建议,帮助用户高效完成基因组分析。

weixin_28732953的博客 441

leetcode-324-摆动排序 II-java

题目及测试 package pid324; /* 摆动排序 II 给定一个无序的数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序。 示例 1: 输入: nums = [1, 5, 1, 1, 6, 4] 输出: 一个可能的答案是 [1, 4, 1, 5, 1, 6] 示例 2: 输入: num...

今天吃了吗的博客 915

YOLOv8 + TensorRT 实战:手把手教你用 C++ 实现实时视频流目标检测(附完整项目代码)

本文详细介绍了如何将YOLOv8与TensorRT结合,通过C++实现实时视频流目标检测的全流程。从环境配置、模型转换优化到视频处理架构设计,手把手教你构建高性能检测系统,并附完整项目代码。特别针对Windows平台下的TensorRT模型加速部署提供了实用技巧和性能优化方案。

weixin_29051193的博客 346

【数组】摆动排序

给你一个整数数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序。你可以假设所有输入数组都可以得到满足题目要求的结果。示例 1:根据上述解法思路,代码实现如下:

weiliuhong1的专栏 204

MinerU在线API异步调用代码开发示例

本文展示了如何使用Python异步编程调用MinerU在线API进行文件批量上传。代码示例包含三个主要功能:1) 通过API密钥获取文件上传URL;2) 使用信号量控制并发上传多个文件;3) 获取提取结果。实现采用httpx异步客户端和asyncio库,支持文件存在性检查、错误处理和日志记录。示例中演示了如何上传PDF文件到MinerU平台,并提供了获取批量处理结果的接口。该代码可作为异步调用MinerU API的参考实现。

拥抱具身智能,昇腾Ascend C 352

基于Scrapy+Playwright的学术会议信息智能爬取系统实战

本文详细介绍如何使用Python构建一个高效的学术会议信息爬取系统,结合Scrapy框架和Playwright无头浏览器技术,实现对全球学术会议数据的自动化采集、清洗和存储。文章包含完整的技术方案设计、代码实现细节以及性能优化策略,可帮助读者快速掌握现代网络爬虫开发的核心技术。关键词:Python爬虫、Scrapy、Playwright、学术会议、数据采集、反爬对抗python复制下载。

2201_76125261的博客 710

js.324摆动排序 II

1,4,1,5,1,6] 同样是符合题目要求的结果,可以被判题程序接受。你可以假设所有输入数组都可以得到满足题目要求的结果。先将nums进行降序排序,n为要循环的次数。

露西西⭐的博客 301

[Python从零到壹] 十三.机器学习之聚类算法四万字总结全网首发(K-Means、BIRCH、树状聚类、MeanShift)

欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。Python系列整体框架包括基础语法10篇、网络爬虫30篇、可视化分析10篇、机器学习20篇、大数据分析20篇、图像识别30篇、人工智能40篇、Python安全20篇、其他技巧10篇。您的关注、点赞和转发就是对秀璋最大的支持,知识无价人有情,希望

杨秀璋的专栏 2万+

LeetCode 每日一题——324. 摆动排序 II

324. 摆动排序 II给你一个整数数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]… 的顺序。你可以假设所有输入数组都可以得到满足题目要求的结果。示例 1: 示例 2: 这道题需要将原数组排列成 nums[0] < nums[1] > nums[2] < nums[3] 这样一大一小的结构,那么我们可以将数组进行按照从小到大排序,并从中间切分,左边部分是较小的,右边部分是较大,然后按照一小一大的顺序依次放回数组,便能够得到结果。以数组 nums =

SK_Jaco的博客 455

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

leetcode:324. 摆动排序 II

## leetcode:969. 煎饼排序 思路 将给定数组排序并逆序; 拆分处理后的数组,得到两个数组; 将一个数组插入至另一个数组。 def resolution(nums): length = len(nums) if(length == 0 or length == 1 or length == 2): return nums nums.sor...

nidaye666666的博客 215

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

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

324. 摆动排序 II

给你一个整数数组nums,将它重新排列成nums[0] < nums[1] > nums[2] < nums[3]...的顺序。 你可以假设所有输入数组都可以得到满足题目要求的结果。 示例 1: 输入:nums = [1,5,1,1,6,4] 输出:[1,6,1,5,1,4] 解释:[1,4,1,5,1,6] 同样是符合题目要求的结果,可以被判题程序接受。 示例 2: 输入:nums = [1,3,2,2,3,1] 输出:[2,3,1,3,1,2] 提示: 1 &...

包磊磊的博客 851

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

​力扣解法汇总324-摆动排序 II

​力扣解法汇总324-摆动排序 II

分享+记录 361

324 Wiggle Sort II 摆动排序 II

给定一个无序的数组nums,将它重新排列成nums[0] < nums[1] > nums[2] < nums[3]...的顺序。例子:(1) 给定nums = [1, 5, 1, 1, 6, 4],一个可能的结果是[1, 4, 1, 5, 1, 6]。(2) 给定nums = [1, 3, 2, 2, 3, 1],一个可能的结果是[2, 3, 1, 3, 1, 2]。注意:你可...

weixin_30369087的博客 148

摆动排序 II-LintCode

给你一个数组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].思路:

kane的博客 416

2021-11-05:摆动排序 II。给你一个整数数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序。你可以假设所有输入数组都可以

2021-11-05:摆动排序 II。给你一个整数数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]… 的顺序。你可以假设所有输入数组都可以得到满足题目要求的结果。力扣324。 福大大 答案2021-11-05: 需要了解快排和完美洗牌问题。 时间复杂度:O(N)。 空间复杂度:O(1)。 代码用golang编写。代码如下: package main import ( "fmt" "math/rand" ) fun

福大大架构师每日一题 2万+

【Javascript】“前K个”类问题总结

近日刷题碰到一道题: LeetCode 215. 给定整数数组nums和整数k,请返回数组中第k个最大的元素。 这个题很简单,先排序,后输出前k个元素即可。 /** * @param {number[]} nums * @param {number} k * @return {number} */ var findKthLargest = function(nums, k) { nums.sort((a, b) => b - a) return nums[k-1] ...

m0_37582087的博客 232

【信息科学与工程学】【物理/化学科学和工程技术】知识体系87——声学基础06 几何声学与波形

对于一维超材料单元,先计算其散射矩阵 S=[S11​S21​​S12​S22​​](可通过有限元或传递矩阵得到),然后反推等效折射率 neff​和阻抗 Zeff​:Zeff​=±(1−S11​)2−S212​(1+S11​)2−S212​​​,ejkeff​d=1−S11​(Zeff​−1)/(Zeff​+1)S21​​。对于液体层,矩阵简化为 Tliq​=[cos(kz​d)jsin(kz​d)/(ρcz​)​jρcz​sin(kz​d)cos(kz​d)​],其中 kz​=(ω/c)2−kx2​​。

weixin_49199313的博客 404

摆动排序 II

给定一个无序的数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]… 的顺序。 示例 1: 输入: nums = [1, 5, 1, 1, 6, 4] 输出: 一个可能的答案是 [1, 4, 1, 5, 1, 6] 示例 2: 输入: nums = [1, 3, 2, 2, 3, 1] 输出: 一个可能的答案是 [2, 3, 1, 3, 1, 2] 说明: 你可以假设所有输入都会得到有效的结果。 进阶: 你能用 O(n) 时间复杂度和

weixin_43824233的博客 201

Java实现-摆动排序1

public class Solution { /** * @param nums a list of integer * @return void */ public void wiggleSort(int[] nums) { // Write your code here if(nums.length==0){

Narasimha_Karumanchi 581
上一篇: 328. 奇偶链表(JS实现)
下一篇: 322. 零钱兑换(JS实现)
PAT-python-zjw
博客等级 码龄10年 381粉丝 408原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值