新建一个 ans 数组保存返回结果

使用偶数指针和技术指针修改 ans 数组,偶数指针一开始位于 ans[0] ,奇数指针一开始位于 ans[n-1]

遍历 nums 数组,如果为偶数,直接修改对应位置 ans 数组,同时偶数指针加 1

遍历 nums 数组,如果为奇数,直接修改对应位置 ans 数组,同时奇数指针减 1

最后别忘了反转 奇数指针到最后的位置

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型vector
     * @return int整型vector
     */
    vector<int> reorderCows(vector<int>& nums) {
        int n = nums.size();
        vector<int> ans(n, 0);
        int even = 0, odd = n - 1;
        for (int i = 0; i < n; i++) {
            if (nums[i] % 2 == 0) {
                ans[even] = nums[i];
                even++;
            } else {
                ans[odd] = nums[i];
                odd--;
            }
        }
        reverse(ans.begin() + odd + 1, ans.end());
        return ans;
    }
};

时间复杂度:O(n),遍历 nums 数组 O(n),反转 ans 数组O(n)

空间复杂度:O(n),存储 ans 数组