面试题21:调整数组顺序使奇数位于偶数前面

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

    • 题目描述
    • leetcode

题目描述

所有奇数位于前半部分,偶数位于后半部分

同leetcode

leetcode

  1. 按奇偶排序数组
    给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。

你可以返回满足此条件的任何数组作为答案。

void sortCore(vector&A, int start, int end)
{
    if(start >= end) return;
    if(A[start] %2 == 1 &&  A[end] %2 == 0)
    {
        int tmp = A[start];
        A[start] = A[end];
        A[end] = tmp;
        sortCore(A, ++start, --end);
    }
    else if(A[start] %2 == 0 &&  A[end] %2 == 0)
    {
        sortCore(A, ++start, end);
    }
    else if(A[start] %2 == 1 &&  A[end] %2 == 1)
    {
        sortCore(A, start, --end);
    }
    else
    {
        sortCore(A, ++start, --end);
    }
    
}


vector sortArrayByParity(vector& A) {
    int a = 0, b = A.size()-1;
    if(A.size()<=1)return A;
    sortCore(A, 0, A.size()-1);
    return A;
    
}

执行用时 : 72 ms, 在Sort Array By Parity的C++提交中击败了40.92% 的用户
内存消耗 : 9.8 MB, 在Sort Array By Parity的C++提交中击败了83.95% 的用户

  1. 按奇偶排序数组 II
    给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。

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

你可以返回任何满足上述条件的数组作为答案。

vector sortArrayByParityII(vector& A) {
    if(A.size()<=0) return A;
    int odd =1, even = 0;
    bool oddflag = false, evenflag = false;
    
    
    while(odd

执行用时 : 196 ms, 在Sort Array By Parity II的C++提交中击败了34.62% 的用户
内存消耗 : 11.9 MB, 在Sort Array By Parity II的C++提交中击败了76.18% 的用户


class Solution {
public:
    vector sortArrayByParityII(vector& A) {
       vector a(A.size());
       int x1=0,x2=1,i;
        for(i=0;i

你可能感兴趣的:(C++,leetcode,算法)