Hyplus目录
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;
}
}