剑指offer 14 调整数组顺序使奇数位于偶数前面

牛客网上的题目还有一个额外的要求,就是不改变数组原始的前后数据,这种可以用队列来存储,或者把前后比较变为相邻的元素比较。

这个题目,主要要考察扩展性,用func函数就实现了扩展性。只需要改func函数,就可以实现负数移动到非负数前面,被3整除的数移到不能被3整除的数的前面

class Solution {
public:
    void reOrderArray(vector<int> &array) {
        int length = array.size();
        if(length <= 0)
            return;
        int start = 0;
        int end = length - 1;
        while(start < end){
            while(func(array[start]))
                start++;
            while(!func(array[end]))
                end--;
            if(start < end){
                int tmp = array[start];
                array[start] = array[end];
                array[end] = tmp;
            }
        }
    }
    static bool func(int number){
        if(number & 0x1)
            return true;
        else
            return false;
    }
};

这个题主要是将数组前后进行比较

原文地址:https://www.cnblogs.com/ymjyqsx/p/9519897.html