剑指offer---调整数组使奇数位于偶数前面

题目14:调整数组使奇数位于偶数前面(leetcode链接:https://leetcode-cn.com/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/

题目分析

方法1:完成基本功能的解法

维护两个指针,一个指向数组的开始位置另一个指向数组的结束位置,移动两个指针,如果前边指针指向的是偶数后边指针指向的是奇数,交换两个指针的值。

方法2:升级版

上面两种改进方法是没有任何问题的,但是我们可以发现上述问题都是同一类问题,代码的基本框架都是相同的。为了实现不同的功能每次定义新的函数,使得代码容易。解决同类问题最好的方法就是使用函数指针,针对不同的同类功能,使用函数指针作为判断依据,减少冗余代码提高程序的可读性。

代码描述

方法1

class Solution {
public:
    vector<int> exchange(vector<int>& nums) {
        //如果数组为空,或者只有一个元素时,直接返回。
        if(nums.size() <= 1)
            return nums;
        vector<int>::iterator begin = nums.begin();
        vector<int>::iterator end = nums.end()-1;
        //前后比较,如果前边为偶数后边为奇数就交换
        while(begin < end)
        {
            while(begin < end && *begin%2 != 0)
            {
                begin++;
            }
            while(begin < end && *end%2 == 0)
            {
                end--;
            }
            int temp = *begin;
            *begin = *end;
            *end = temp;
        }
        return nums;    
    }
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

疯狂嘚程序猿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值