给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。
返回满足此条件的 任一数组 作为答案。
示例 1:输入:nums = [3,1,2,4]
输出:[2,4,3,1]
解释:[4,2,3,1]、[2,4,1,3] 和 [4,2,1,3] 也会被视作正确答案。
输入:nums = [0]
输出:[0]
- 1 <= nums.length <= 5000
- 0 <= nums[i] <= 5000
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sort-array-by-parity
解题分析
方法:双指针
定义双指针,分别指向头尾,当前指针指向奇数,后指针指向偶数时,进行交换,然后继续移动指针,直到两指针相遇。
时间复杂度:O(n) n 为数组长度
空间复杂度:O(1)
class Solution {
public int[] sortArrayByParity(int[] nums) {
// 定义双指针
int i = 0, j = nums.length-1;
// 双向遍历
while(i < j){
while(i < j && nums[j] % 2 == 1){
j--;
}
while(i < j && nums[i] % 2 == 0){
i++;
}
// 交换
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
return nums;
}
}



