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

京公网安备 11010502036488号