//头尾指针
int *exchange(int *nums, int numsSize, int *returnSize)
{
int left = 0;
int right = numsSize - 1;
while (left < right) {
if ((nums[left] % 2) == 1) {
left++;
continue;
}
if ((nums[right] % 2) == 0) {
right--;
continue;
}
if ((nums[left] % 2) == 0 && (nums[right] % 2) == 1) {
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
left++;
right--;
}
}
*returnSize = numsSize;
return nums;
}
int* exchange(int* nums, int numsSize, int* returnSize){
*returnSize = numsSize;
if (numsSize <= 1)
return nums;
int odd_count = 0;
int even_count = 0;
int* odd_arr = (int*)malloc(sizeof(int)*numsSize);
int* even_arr = (int*)malloc(sizeof(int)*numsSize);
for (int i=0; i<numsSize; i++)
{
if (nums[i] % 2 == 1)
odd_arr[odd_count++] = nums[i];
else
even_arr[even_count++] = nums[i];
}
if (odd_count == 0 || even_count ==0)
return nums;
for (int j=odd_count; j<numsSize; j++)
{
odd_arr[j] = even_arr[j-odd_count];
}
return odd_arr;
}