算法应用:双指针 + 一次遍历 先看题给你一个整数数组 nums将 nums 中的的所有偶数元素移动到数组的前面后跟所有奇数元素。返回满足此条件的 任一数组 作为答案。双指针 一次遍历思路和算法记数组 nums 的长度为 n。方法一需要遍历两次 nums第一次遍历时遇到奇数会跳过第二次遍历时遇到偶数会跳过这部分可以优化。新建一个长度为 n 的数组 res 用来保存排完序的数组。遍历一遍 nums遇到偶数则从 res 左侧开始替换元素遇到奇数则从 res 右侧开始替换元素。遍历完成后res 就保存了排序完毕的数组。代码Python3class Solution: def sortArrayByParity(self, nums: List[int]) - List[int]: n len(nums) res, left, right [0] * n, 0, n - 1 for num in nums: if num % 2 0: res[left] num left 1 else: res[right] num right - 1 return resCclass Solution { public: vectorint sortArrayByParity(vectorint nums) { int n nums.size(); vectorint res(n); int left 0, right n - 1; for (auto num : nums) { if (num % 2 0) { res[left] num; } else { res[right--] num; } } return res; } };Javaclass Solution { public int[] sortArrayByParity(int[] nums) { int n nums.length; int[] res new int[n]; int left 0, right n - 1; for (int num : nums) { if (num % 2 0) { res[left] num; } else { res[right--] num; } } return res; } }复杂度分析时间复杂度O(n)其中 n 为数组 nums 的长度。只需遍历 nums 一次。空间复杂度O(1)。结果不计入空间复杂度。