news 2026/9/9 1:33:52

面试常考:如何原地重排数组?这个思路绝了

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
面试常考:如何原地重排数组?这个思路绝了

解题思路

这道题我们用两个指针分别追踪奇数位和偶数位,每次检查最后一个元素是奇数还是偶数,然后把它交换到对应的位置上。

比如最后一个元素是奇数,就把它换到下一个需要填充的奇数位(1, 3, 5…),换过来的元素又成为新的"最后一个元素",继续这个过程。

这样做的优势是不需要额外空间,而且每次交换都在推进进度,最终当奇数位和偶数位都填满后,数组自然就符合要求了。

举个栗子

输入:[4, 2, 5, 7]

执行过程:

  1. 初始:[4, 2, 5, 7],最后元素 7(奇数) → 交换到 odd=1 →[4, 7, 5, 2]
  2. 最后元素 2(偶数) → 交换到 even=0 →[2, 7, 5, 4]
  3. 最后元素 4(偶数) → 交换到 even=2 →[2, 7, 4, 5]
  4. 最后元素 5(奇数) → 交换到 odd=3 →[2, 7, 4, 5]

输出:[2, 7, 4, 5]

代码实现

publicstaticint[]sortArrayByParityII(int[]nums){intn=nums.length;for(intodd=1,even=0;odd<n&&even<n;){if((nums[n-1]&1)==1){// 最后一个元素是奇数,放到奇数位swap(nums,odd,n-1);odd+=2;}else{// 最后一个元素是偶数,放到偶数位swap(nums,even,n-1);even+=2;}}returnnums;}publicstaticvoidswap(int[]nums,inti,intj){inttmp=nums[i];nums[i]=nums[j];nums[j]=tmp;}

如果觉得有帮助,欢迎点赞、关注、转发~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/8 9:40:29

MPK(Mirage Persistent Kernel)源码笔记(4)--- 转译系统

0x00 概要此处的”转译系统“包含两部分&#xff1a;把计算图转换为任务图。将 Mirage 生成的&#xff08;优化过的&#xff09;计算图转换为高效的 CUDA 代码0x01 Task和Event在 Mirage 持久化内核&#xff08;Persistent Kernel&#xff09;的设计与实现中&#xff0c;需突破…

作者头像 李华
网站建设 2026/9/9 1:18:32

中国地形数据完整指南:5分钟快速上手ArcGIS地形分析

中国地形数据完整指南&#xff1a;5分钟快速上手ArcGIS地形分析 【免费下载链接】中国地形数据下载 本仓库提供了一份详细的中国地形数据文件&#xff0c;该文件可在ArcGIS软件中打开并进行进一步分析和可视化。中国地形地势西高东低&#xff0c;呈阶梯状分布&#xff1b;地形多…

作者头像 李华
网站建设 2026/9/8 3:32:28

为什么我的应用会卡顿?垃圾回收中的STW难题与破解之道

垃圾回收算法&#xff1a;清除、压缩、复制可达性分析提供了一种有效的方式&#xff0c;来标记哪些对象死亡&#xff0c;哪些对象还存活。然而&#xff0c;确定哪些对象死亡可以被回收&#xff0c;只是垃圾回收的第一步&#xff0c; 这个过程通常被称为标记&#xff08;Mark&am…

作者头像 李华
网站建设 2026/9/9 11:35:46

深入解析 JuiceFS 垃圾回收机制

删除文件后&#xff0c;为什么对象存储空间未能及时释放&#xff1f;回收站中堆积大量文件&#xff0c;如何高效清理&#xff1f;在短时间内批量删除文件时&#xff0c;删除操作为什么这么缓慢或性能下降&#xff1f;JuiceFS的垃圾回收机制背后的执行流程相对复杂&#xff0c;用…

作者头像 李华
网站建设 2026/9/8 22:22:18

Wi-Fi 6之后,未来家庭路由的几大核心看点

在家庭网络设备里头&#xff0c;路由器是连接外部互联网跟内部智能设备的中枢&#xff0c;它的性能直接作用着上网的体验。跟着光纤宽带的普及以及高带宽应用的出现&#xff0c;用户对路由器的数据处理能力、无线的速率还有功能的多样性提出了更高的要求。近些年来&#xff0c;…

作者头像 李华
网站建设 2026/9/9 6:39:30

FFmpeg开发笔记(八十七)采用Kotlin的手机开源播放器VLC-Android

FFmpeg开发实战&#xff1a;从零基础到短视频上线》一书的“3.4.1 通用音视频播放器”介绍了如何在桌面系统上安装和使用通用音视频播放器VLC media player&#xff0c;其实VLC是个跨平台的播放器&#xff0c;它也提供了面向Android平台的手机版VLC。Android版VLC的官网地址是h…

作者头像 李华