leetcode
905. 按奇偶排序数组

问题描述

LeetCode 905. 按奇偶排序数组 (opens in a new tab),难度简单

给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。

返回满足此条件的 任一数组 作为答案。

示例 1

输入:nums = [3,1,2,4]
输出:[2,4,3,1]
解释:[4,2,3,1]、[2,4,1,3] 和 [4,2,1,3] 也会被视作正确答案。

示例 2

输入:nums = [0]
输出:[0]

提示:

  • 1 <= nums.length <= 5000
  • 0 <= nums[i] <= 5000

题解

双指针

解题思路:

  • 定义两个指针 i = 0j = nums.length - 1
  • i < j 时,判断 nums[i] 是否是奇数,如果是奇数则与 nums[j] 交换位置,反之 i 继续向后遍历。
Solution.java
class Solution {
    public void swap(int[] nums, int i, int j) {
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }
 
    public int[] sortArrayByParity(int[] nums) {
        int i = 0, j = nums.length - 1;
        while (i < j) {
            if (nums[i] % 2 == 0) {
                i++;
            } else {
                swap(nums, i, j);
                j--;
            }
        }
        return nums;
    }
}