- 按奇偶排序数组
给你一个整数数组 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]
Java代码:
class Solution {
public int[] sortArrayByParity(int[] nums) {
int index=0;
int [] arr=new int[nums.length];
for (int i = 0; i < nums.length; i++) {
if(nums[i]%2==0){
arr[index++]=nums[i];
}
}
for (int i = 0; i < nums.length; i++) {
if(nums[i]%2!=0){
arr[index++]=nums[i];
}
}
return arr;
}
}
C代码:
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* sortArrayByParity(int* nums, int numsSize, int* returnSize)
{
int even[numsSize]; //偶数
int odd[numsSize]; //奇数
int evenCount = 0;
int oddCount = 0;
for(int i = 0; i < numsSize; i++)
{
if(nums[i]%2)
{
odd[oddCount++] = nums[i];
}
else
{
even[evenCount++] = nums[i];
}
}
*returnSize = numsSize;
int *returnNums = (int *)malloc(sizeof(int) * numsSize);
if(evenCount)
{
memcpy(returnNums,even,evenCount * sizeof(int));
}
if(oddCount)
{
memcpy(&returnNums[evenCount],odd,oddCount * sizeof(int));
}
return returnNums;
}
JavaScript代码:
/**
* @param {number[]} nums
* @return {number[]}
*/
var sortArrayByParity = function(nums) {
for(let l = 0, r = nums.length - 1; l < r; ) {
while(l < r && nums[l] % 2 == 0)
l++
while(r > l && nums[r] % 2 == 1)
r--
if(l < r) {
const tmp = nums[l]
nums[l] = nums[r]
nums[r] = tmp
}
}
return nums
};
Go代码:
func sortArrayByParity(nums []int) []int {
for l, r := 0, len(nums) - 1; l < r; {
for l < r && nums[l] % 2 == 0 {
l++
}
for r > l && nums[r] % 2 == 1 {
r--
}
nums[l], nums[r] = nums[r], nums[l]
}
return nums
}