922.按奇偶排序数组II
#️ 922.按奇偶排序数组II
给定一个非负整数数组 nums, nums 中一半整数是 奇数 ,一半整数是 偶数 。
对数组进行排序,以便当 nums[i] 为奇数时,i 也是 奇数 ;当 nums[i] 为偶数时, i 也是 偶数 。
你可以返回 任何满足上述条件的数组作为答案 。
思路
基本思想
想法就是将奇数和偶数间接排列,偶奇偶奇偶奇偶奇这样的排列,所以需要将数组中的奇数和偶数分开来,第一想法就是遍历,遇到偶数就放到偶数位置,遇到奇数就放到奇数位置,所以需要两个下标,分别记录当前奇数和当前偶数的插入位置,一旦有插入就移动对应的下标
执行流程
- 遍历输入
- 遇到偶数元素就插入到偶数下标对应的位置,偶数下标移动两个位置
- 遇到奇数元素就插入到奇数下标对应的位置,奇数下标移动两个位置
- 返回最终的结果
代码
根据以上分析,得出以下代码:
|
|
总结
使用两个下标分开记录偶数和奇数的位置,避免了重复遍历,这样可以做到一次遍历就得到结果