0
点赞
收藏
分享

微信扫一扫

力扣——905. 按奇偶排序数组(Java、JavaScript、C、Go)

  1. 按奇偶排序数组
    给你一个整数数组 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
}

在这里插入图片描述


举报

相关推荐

0 条评论