5.leetcode 剑指offer(调整数组顺序使奇数位于偶数前面)c语言

1.题目:

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。

2.示例:

输入:nums = [1,2,3,4]
输出:[1,3,2,4] 
注:[3,1,2,4] 也是正确的答案之一。

3.思路:

本题思路用双指针:

  • 整体思路:首先指定前指针 start 和后指针 end,然后前指针定位偶数,后指针定位奇数,定位到之后将两个值互换,直到数组遍历完成。

4.题解:

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* exchange(int* nums, int numsSize, int* returnSize){
     *returnSize = numsSize;
     int start = 0;                            //定义头指针
     int end   = numsSize-1;                     //定义尾指针
     while(start<end){                          //当头指针和尾指针没有相撞时
         while(start<end&&(nums[start]%2==1)){
             start++;                          //当头指针为奇数时一直向后退推
         }
          while(start<end&&(nums[end]%2==0)){
             end--;                            //当尾指针为偶数一直向前推
         }                                     //当两个循环停止时,前指针为偶数,后指针为奇数
         int temp = nums[start];               //设定temp为临时变量,交换两个数
         nums[start] = nums[end];
         nums[end] = temp;
     }
     return nums;

     
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pg_hj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值