关于《剑指offer》奇前偶后题目测试不通过的疑问?已解决!

=======问题已解决,自己想当然,造成的后果  || 谢谢大家指导 ===========

题目:输入一个整数数组,调整数组顺序使奇数位于偶数的前面,并且保证原有的顺序。
思路:使用两个游标 ij,开始时i指向数组左侧第一个元素j指向数组最后一个元素然后i开始向后遍历,直到找到第一个偶数,另外j向前遍历,直到找到第一奇数,此时偶数在前而奇数在后,因此需要交换两个数。
代码实现:
class Solution {
public:
    void reOrderArray(vector<int> &array) {

        int size = array.size();
        if(size <= 0)
            return ;
        
        int i = 0;
        int j = size - 1;
        while(i < j){
            //i向后移动,直到array[i]为偶数
            while( (i < j) && (array[i] % 2 ) == 1)
                i++;
            
            //j向前移动,直到array[j]为奇数
            while( (i < j) && (array[j] % 2 ) == 0)
                j--;
            
            //如果i<j,则交换array[i]和array[j]
            if(i < j)
                swap(array[i], array[j]);
        }        
    }
};

但是测试显示的是无法通过测试用例,是代码那里出了问题吗? 望牛油+牛大大们指导!
全部评论
书上没有保证相对顺序不变的要求
点赞 回复 分享
发布于 2017-08-21 10:46
仔细看题目,那题目还要求相对位置不能变。你这个只是把奇数放前面而已。
点赞 回复 分享
发布于 2017-08-21 10:42
保证原有的顺序
点赞 回复 分享
发布于 2017-08-21 10:42

相关推荐

04-11 21:31
四川大学 Java
野猪不是猪🐗:(ja)va学弟这招太狠了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务