zl程序教程

您现在的位置是:首页 >  其他

当前栏目

[LeetCode]剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

LeetCode数组 顺序 调整 Offer 21 前面 奇数
2023-09-11 14:18:49 时间

算法标签 双指针

题目简叙

在这里插入图片描述

思路

前后指针
使用指针判断奇数偶数,再进行交换
有点类似于快速排序中哨兵探路的思路

快慢指针
fast一直走 遇到吻合的数就和low交换 low++到下一个数去

代码

前后指针

class Solution {
public:
    vector<int> exchange(vector<int>& nums) {
        ios::sync_with_stdio(false);
        
        int l=0,r=nums.size()-1;
        while(l<=r){
            if(!(nums[r]&1)){
                r--;
                continue;
            }
            else if(nums[l]&1){
                l++;
                continue;
            }
            swap(nums[l],nums[r]);
        }
        return nums;
    }
};


在这里插入图片描述

快慢指针

class Solution {
public:
    vector<int> exchange(vector<int>& nums) {
        ios::sync_with_stdio(false);

        int low=0,fast=0;
        for(int i=0;i<nums.size();i++){
            if(nums[fast]&1){
                swap(nums[low],nums[fast]);
                low++;
            }
            fast++;
        }
        return nums;
    }
};


在这里插入图片描述