调整数组顺序使奇数位于偶数前面
发布日期:2021-06-20 02:50:13 浏览次数:5 分类:技术文章

本文共 977 字,大约阅读时间需要 3 分钟。

题目

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。

示例一

输入:nums = [1,2,3,4]

输出:[1,3,2,4]
注:[3,1,2,4] 也是正确的答案之一。

思路一

开额外的一个数组,然后开始遍历。

代码一

class Solution {
public: vector
exchange(vector
& nums) {
int n = nums.size(), l = 0, r = n - 1; vector
ans(n, 0); for(auto d : nums){
if(d % 2) ans[l++] = d; else ans[r--] = d; } return ans; }};

思路二

  • 双指针,从左边找第一个偶数,从右边找第一个技术
  • 交换位置

代码二

class Solution {
public: vector
exchange(vector
& nums) {
int n = nums.size(), l = 0, r = n - 1; while(l <= r){
while(l <= r && nums[l] % 2) l++; while(l <= r && nums[r] % 2 == 0) r--; //异或实现两数字的交换 if(l < r){
nums[l] = nums[l] ^ nums[r]; nums[r] = nums[l] ^ nums[r]; nums[l] = nums[l] ^ nums[r]; } } return nums; }};

转载地址:https://blog.csdn.net/free1993/article/details/114876568 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:0~n-1中缺失的数字
下一篇:连续子数组的最大和

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月10日 13时05分13秒