题解 | #调整数组顺序使奇数位于偶数前面(二)#

调整数组顺序使奇数位于偶数前面(二)

https://www.nowcoder.com/practice/0c1b486d987b4269b398fee374584fc8

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param array int整型vector 
     * @return int整型vector
     */
    vector<int> reOrderArrayTwo(vector<int>& array) {
        // 前后双指针,只需一次遍历,时间O(n),空间O(1)
        int i = 0; 
        int j = array.size()-1;
        while(i<j){
            while(i<j && array[i]&1) i++;// arr[i]为奇数,i++向右移动,直到arr[i]为偶数
            while(i<j && (array[j]&1)==0) j--;// arr[j]为偶数,j--向左移动,直到arr[j]为奇数
            if(i<j) swap(array[i],array[j]);
        }
	  
	  // // 在原数组上遍历修改,时间O(n^2),空间O(1)
        // for(int i=0;i<array.size();i++){
        //     if(array[i]&1) continue;// 奇数不需要动
        //     else{// 若碰到偶数
        //         // 遍历之后的元素,找到第一个奇数
        //         bool flag = false;// 是否找到奇数
        //         for(int j=i+1;j<array.size();j++){
        //             if(array[j]&1){// 找到奇数
        //                 // 将奇偶元素交换,保证奇在偶前面
        //                 swap(array[i],array[j]);
        //                 flag = true;
        //                 break;
        //             }
        //         }
        //         // 如果偶数后面没有奇数,说明调整完毕,结束外层循环
        //         if(!flag) break;
        //     }
        // }
	  
        return array; 
    }
};

全部评论

相关推荐

今年秋招到底是谁在拿offer:七院电话面的时候问我有没有女朋友,一听异地说你赶紧分。我:???
点赞 评论 收藏
分享
秋招倒计时了,有没有一起组队捡漏的?
牛客965593684号:我倒是觉得捡漏机会不多,现在大厂都精得很,超发一大堆offer,还是等春招吧
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务