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

算法标签 双指针

题目简叙

[LeetCode]剑指 Offer 21. 调整数组顺序使奇数位于偶数前面_第1张图片

思路

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

快慢指针
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;
    }
};


[LeetCode]剑指 Offer 21. 调整数组顺序使奇数位于偶数前面_第2张图片

快慢指针

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;
    }
};


[LeetCode]剑指 Offer 21. 调整数组顺序使奇数位于偶数前面_第3张图片

你可能感兴趣的:(LeetCode,剑指Offer,双指针)