栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

LeetCode-按奇偶排序数组

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode-按奇偶排序数组

给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。返回满足此条件的 任一数组 作为答案。

示例 1:

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

来源:力扣(LeetCode)

分析题目可知

  1. 遍历数组,取出偶数,头部插入数据到结果数组中
  2. 取出偶数尾部插入数据到结果数组中

那么使用JS就很好写了

var sortArrayByParity = function(nums) {
    let res=[];
    nums.map((item)=>{
        if(item%2==0)
        {
            res.unshift(item);
        }
        else{
            res.push(item);
        }
    })

    return res;
};

两个方法

unshift

头部插入数据,与其相反,shift即为头部删除

push

尾部插入数据,也算是与unshift相反

那么C语言也可以用同样的思路,其实就是双指针,一个指向开头,一个指向结尾

int* sortArrayByParity(int* nums, int numsSize, int* returnSize){
    int *returnNums = (int *)malloc(sizeof(int) * numsSize);
    int *left=returnNums,*right=returnNums+numsSize-1;
    int index=0;
    while(index
        if(nums[index]%2==0)
        {
            *left=nums[index];
            left++;
        }
        else{
            *right=nums[index];
            right--;
        }
        index++;
    }

    *returnSize=numsSize;

    return returnNums;
}
进阶

对数组进行排序,以便当 nums[i] 为奇数时,i 也是 奇数 ;当 nums[i] 为偶数时, i 也是 偶数 。

输入:nums = [4,2,5,7]
输出:[4,5,2,7]
解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。

由题可得

  1. 先判断是奇数还是偶数
  2. 奇数,下标为奇数,也就是从1开始,每次增2
  3. 偶数,下表为偶数,从0开始,每次增2
C语言
int* sortArrayByParityII(int* nums, int numsSize, int* returnSize){
    int *returnNums = (int *)malloc(sizeof(int) * numsSize);
    int even=0,odd=1;
    int index=0;
    while(index
        if(nums[index]%2==0)
        {
            returnNums[even]=nums[index];
            even+=2;
        }
        else{
            returnNums[odd]=nums[index];
            odd+=2;
        }
        index++;
    }

    *returnSize=numsSize;

    return returnNums;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/971896.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号