LeetCode 922. Sort Array By Parity II

LeetCode 922. Sort Array By Parity II
LeetCode 922. Sort Array By Parity II



/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* sortArrayByParityII(int* A, int ASize, int* returnSize){
    int *ret = (int*) malloc(sizeof(int) * ASize);
    *returnSize = ASize;
    int odd = 0;
    int even = 0;
    for(int i=0;i<ASize;i++) {
        if (i % 2 == 0) {
            while(A[even] % 2 != 0) {
                even ++;
            }
            ret[i] = A[even];
            even++;
        } else {
            while(A[odd] % 2 == 0) {
                odd ++;
            }
            ret[i] = A[odd];
            odd++;
        }
    }
    return ret;
}


稍微改一下
LeetCode 922. Sort Array By Parity II



/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* sortArrayByParityII(int* A, int ASize, int* returnSize){
    int *ret = (int*) malloc(sizeof(int) * ASize);
    *returnSize = ASize;
    int odd = 1;
    int even = 0;
    for(int i=0;i<ASize;i++) {
        if (A[i] % 2 == 0) {
            ret[even] = A[i];
            even+=2;
        } else {
            ret[odd]=A[i];
            odd+=2;
        }
    }
    return ret;
}


LeetCode 922. Sort Array By Parity II
这个跟我的解答,基本一致,为啥只要20ms?