⬆︎
×

[LC] 0922 Sort Array By Parity II

Java

import java.util.Arrays;

/**
 * <a href="https://leetcode.cn/problems/sort-array-by-parity-ii/">Sort Array By Parity II</a>
 * 数组;双指针;排序
 */
class Solution {
    public int[] sortArrayByParityII(int[] nums) {
        for (int i = 0, j = 1; i < nums.length; i += 2) {
            if (nums[i] % 2 != 0) { // 奇数
                while (nums[j] % 2 != 0) {  // 找到下一个偶数
                    j += 2;
                }
                swap(nums, i, j);
            }
        }
        return nums;
    }

    private void swap(int[] nums, int i, int j) {
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }
}

Go

func sortArrayByParityII(nums []int) []int {
    for i, j := 0, 1; i < len(nums); i += 2 {
        if nums[i]%2 != 0 {
            for nums[j]%2 != 0 {
                j += 2
            }
            nums[i], nums[j] = nums[j], nums[i]
        }
    }
    return nums
}

JavaScript

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var sortArrayByParityII = function (nums) {
    for (let i = 0, j = 1; i < nums.length; i += 2) {
        if (nums[i] % 2 !== 0) {
            while (nums[j] % 2 !== 0) {
                j += 2;
            }
            [nums[i], nums[j]] = [nums[j], nums[i]];
        }
    }
    return nums;
};

PHP

class Solution {

    /**
     * @param Integer[] $nums
     * @return Integer[]
     */
    function sortArrayByParityII(array $nums): array {
        $n = count($nums);
        for ($i = 0, $j = 1; $i < $n; $i += 2) {
            if ($nums[$i] % 2 != 0) {
                while ($nums[$j] % 2 != 0) {
                    $j += 2;
                }
                $this->swap($nums, $i, $j);
            }
        }
        return $nums;
    }

    private function swap(&$nums, $i, $j): void {
        $temp = $nums[$i];
        $nums[$i] = $nums[$j];
        $nums[$j] = $temp;
    }
}

发表评论