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

LeetCode 922.按奇偶排序数组2

给定一个非负整数数组 nums, nums 中一半整数是 奇数 ,一半整数是 偶数 。

对数组进行排序,以便当 nums[i] 为奇数时,i 也是 奇数 ;当 nums[i] 为偶数时, i 也是 偶数 。

你可以返回 任何满足上述条件的数组作为答案 。

示例 1:

输入:nums = [4,2,5,7]
输出:[4,5,2,7]
解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。
示例 2:

输入:nums = [2,3]
输出:[2,3]

提示:

2 <= nums.length <= 2 * 104^44
nums.length 是偶数
nums 中一半是偶数
0 <= nums[i] <= 1000

进阶:可以不使用额外空间解决问题吗?

同向双指针,左指针l左边[0, l)是已经排好序的部分,如果右指针指向的值和左指针l的奇偶性相同,就交换左右指针指向的值,然后递增左指针l;否则右移右指针,直到找到和l奇偶性相同的值:

class Solution {
public:vector<int> sortArrayByParityII(vector<int>& nums) {int l = 0;int r = 0;int n = nums.size();while (r < n) {if ((nums[r] & 1) != (l & 1)) {++r;} else {swap(nums[l], nums[r]);++l;// 此处修改r的代码可以去掉,因为l最多比r多1// 这发生在l和r指向同一个值的位置,且该值与l的奇偶性相同时// 这一情况下,l会移动到下一位置,l的奇偶性就会改变// 即l与r指向的值的奇偶性就会不同,然后下次循环就会右移r// 效果与此处的赋值相同r = max(l, r);}}return nums;}
};

如果nums的长度为n,则此算法时间复杂度为O(n),空间复杂度为O(1)。

http://www.lryc.cn/news/621744.html

相关文章:

  • 大模型LLM部署与入门应用指南:核心原理、实战案例及私有化部署
  • 解决安装特定版本 anaconda-client 的错误
  • CSS从入门到精通完整指南
  • 【科研绘图系列】R语言绘制三维曲线图
  • 探索无人机图传技术:创新视野与无限可能
  • Salary Queries
  • 商品数据仓库构建指南:TB 级淘宝 API 历史详情数据归档方案
  • 8.15网络编程——UDP和TCP并发服务器
  • ​​金仓数据库KingbaseES V9R1C10安装教程 - Windows版详细指南​
  • MySQL知识点(上)
  • 复杂度扫尾+链表经典算法题
  • 开发避坑指南(27):Vue3中高效安全修改列表元素属性的方法
  • 科普:Pygame 中,`pg.Surface` v.s. `screen`
  • 力扣 hot100 Day74
  • wordpress忘记密码怎么办
  • 2025最新:如何禁止指定软件联网?
  • php危险函数,二.assert()[现版本已弃用]
  • 基于nodejs+express的网上零食销售系统/零食商城平台
  • 智和信通全栈式运维平台落地深圳某学院,赋能运维管理提质提效
  • Golang信号处理实战
  • Chrome插件开发实战:从架构到发布全流程
  • HarmonyOS 实战:用 List 与 AlphabetIndexer 打造高效城市选择功能
  • 固定资产管理系统 OCR 识别功能技术解析
  • 架构需求规格说明(ARD):项目成功的隐形引擎
  • Android RxJava 过滤与条件操作详解
  • 小兔鲜儿-小程序uni-app(二)
  • 阿里云杭州 AI 产品法务岗位信息分享(2025 年 8 月)
  • Baumer高防护相机如何通过YoloV8深度学习模型实现驾驶员疲劳的检测识别(C#代码UI界面版)
  • 分享一个基于Hadoop的二手房销售签约数据分析与可视化系统,基于Python可视化的二手房销售数据分析平台
  • 企业级Spring事务管理:从单体应用到微服务分布式事务完整方案