新建一个 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 数组