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;
}
稍微改一下
/**
* 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;
}
这个跟我的解答,基本一致,为啥只要20ms?