【算法】剑指offer - JZ81 调整数组顺序使奇数位于偶数前面(二)

题目链接

输入一个长度为 n 整数数组,数组里面可能含有相同的元素,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,对奇数和奇数,偶数和偶数之间的相对位置不做要求,但是时间复杂度和空间复杂度必须如下要求。

双指针法

左指针找偶数,右指针找奇数,找到后进行交换。

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param array int整型vector 
     * @return int整型vector
     */
    vector<int> reOrderArrayTwo(vector<int>& array) {
        int left = 0, right = array.size()-1;
        
        while(left < right)
        {
            while(left < right && (array[left] & 1))
            {
                // left找偶数,是奇数,++left
                ++left;
            }
            while(left < right && !(array[right] & 1))
            {
                --right;
            }
            swap(array[left], array[right]);
        }
        return array;
    }
};

你可能感兴趣的:(【算法】,leetcode,c++)