数组-数组奇偶排序
十二月 15, 2021
1311
每日一题,提升自己。今天分享一道关于数组奇偶排序的题目,且听我细细道来。
数组 - 奇偶排序
1. 题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
示例:
输入:nums =[1,2,3,4]
输出:[1,3,2,4]
注:[3,1,2,4] 也是正确的答案之一。
提示:
1 <= nums.length <= 50000
1 <= nums[i] <= 10000
2. 解题思路
这道题只是对数组内元素的一个奇偶排序,首先可以想到的就是双指针,从前后来分别扫描元素。首先指定前指针 left
和后指针 right
,然后前指针定位偶数,后指针定位奇数,定位到之后将两个值互换,直到数组遍历完成。
复杂度:
- 时间复杂度:O(n)。
- 空间复杂度:O(1)。
3. 算法流程
- 初始化前指针 left = 0,后指针 right = nums.length - 1。
- 当 left < right 时表示该数组还未遍历完成,则继续进行奇数和偶数的交换。
- 当 nums[left] 为奇数时,则 left++,直到找到不为奇数的下标为止。
- 当 nums[right] 为偶数时,则 right–,直到找到不为偶数的下标为止。
- 交换 nums[left] 和 nums[right],继续下一轮交换。
- 数组遍历完成之后,返回 nums,即为交换后的结果
4. 代码实现
Java代码实现如下:
1 |
|
- 本文作者:byFan
- 本文链接:http://byfan.xyz/2021/12/15/exchange/index.html
- 版权声明:本博客所有文章均采用 BY-NC-SA 许可协议,转载请注明出处!