当前位置: 首页 > news >正文

LeetCode 280:摆动排序 | 原地调整算法

LeetCode 280摆动排序 | 原地调整算法引言摆动排序Wiggle Sort是 LeetCode 第 280 题难度为 Medium。题目要求原地调整数组使数组满足 nums[0] nums[1] nums[2] nums[3] ...。与摆动排序 II 不同I 允许相邻元素相等。这使得问题更简单只需要在遍历过程中确保每个偶数位0, 2, 4...的元素小于等于下一个元素。问题分析题目描述给定数组 nums重新排列数组使满足 nums[0] nums[1] nums[2] nums[3] ...问题特点由于允许相等问题的约束更宽松。可以使用简单的遍历在遇到不符合条件的元素时交换相邻元素即可。解决方案贪心方法def wiggleSort(nums): for i in range(len(nums) - 1): if (i % 2 0 and nums[i] nums[i 1]) or \ (i % 2 1 and nums[i] nums[i 1]): nums[i], nums[i 1] nums[i 1], nums[i]算法详解遍历数组对于每个位置 i如果 i 是偶数要求 nums[i] nums[i1]。如果不满足交换两者。如果 i 是奇数要求 nums[i] nums[i1]。如果不满足交换两者。复杂度分析时间复杂度时间复杂度为 O(n)因为只需要一次遍历。空间复杂度空间复杂度为 O(1)原地操作。代码实现Python 实现def wiggleSort(nums): for i in range(len(nums) - 1): if i % 2 0: if nums[i] nums[i 1]: nums[i], nums[i 1] nums[i 1], nums[i] else: if nums[i] nums[i 1]: nums[i], nums[i 1] nums[i 1], nums[i]测试用例def test_wiggle_sort(): nums1 [3, 5, 2, 1, 6, 4] wiggleSort(nums1) for i in range(len(nums1) - 1): if i % 2 0: assert nums1[i] nums1[i 1] else: assert nums1[i] nums1[i 1] print(所有测试用例通过)总结摆动排序 I 比 II 更简单因为允许相邻元素相等。只需要一次遍历确保每个偶数位小于等于下一个元素每个奇数位大于等于下一个元素。
http://www.rkmt.cn/news/1374156.html

相关文章:

  • 小红书“素人感”文案炼成术(反AI痕迹终极方案):用ChatGPT生成却像真人手写的7个微表情锚点
  • rust入门
  • 澜起科技股东上海融迎拟减持:可套现超30亿 公司刚港股募资80亿港元
  • Meteor-Files高级技巧:利用钩子和事件定制文件上传流程的完整指南
  • 黑洞扰动理论与引力波波形建模技术解析
  • 开源可穿戴系统HARNode:低成本高精度人体活动识别方案
  • C166 V3.11内存分页警告解决方案与优化
  • ViVeTool-GUI专业指南:解锁Windows隐藏功能的智能方案
  • Ubuntu 20.04 + RTX 3090 保姆级教程:从零搞定BEVFusion环境(附10个常见报错解决方案)
  • 2026年4月线束设备公司口碑推荐,线束设备/剥线机/端子机,线束设备实力厂家哪家靠谱 - 品牌推荐师
  • B3642 二叉树的遍历<---搜索与树
  • Deep Clustering of Tabular Data by Weighted Gaussian Distribution Learning——基于加权高斯分布学习的表格数据深度聚类
  • STM32内核精讲 | 第七章:异常与中断系统(NVIC)—— 进阶篇
  • 机器学习数据集详解,公开免费数据集获取渠道汇总
  • 数据结构:线性表和顺序表
  • 非结构化资料智慧解析应用方案(2026版)
  • 医疗AI入门实战:用Python从MIMIC-CXR数据集中提取X光图像和诊断报告(附完整代码)
  • 朝晖玻璃钢:玻璃钢保温水箱/玻璃钢消防水箱/玻璃钢罐化粪池/碳钢水箱/立式不锈钢水箱/组合式玻璃钢水箱/雨水一体化提升泵站/选择指南 - 优质品牌商家
  • 15_结构体联合与枚举_组织复杂数据
  • 一小时搭建爬虫数据提取智能体 · 数据矿工
  • 多层感知机
  • 2026年紫外线杀菌除藻灯优质厂家深度解析:聚焦技术、产能与服务三角 - 2026年企业推荐榜
  • ubuntu2026.04部署k8s1.36版本的傻瓜式教程(注:运行时为docker,网络插件为calico)
  • DFT笔记59
  • 高通骁龙处理器深度解码:从移动通信霸主到全场景智能计算引擎
  • 告别SSH断连焦虑:手把手教你用Screen在Linux后台挂起任务(含源码编译避坑)
  • Win7专业版电脑重启后时间服务总停止?三步设置让它稳定运行(附命令详解)
  • 鸿蒙数理体系创作说明 (鸿蒙数学一阶完结后更新说明)
  • 在CentOS7服务器上装Win10?手把手教你用Ventoy搞定双系统(附网卡驱动安装避坑指南)
  • 2026年知名的大豆定量包装机/饲料定量包装机厂家哪家好 - 行业平台推荐