题目
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
示例
输入:nums = [1,2,3,4]
输出:[1,3,2,4]
注:[3,1,2,4] 也是正确的答案之一。
提示:
0 <= nums.length <= 50000
1 <= nums[i] <= 10000
C语言代码
首尾双指针
void Swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
int* exchange(int* nums, int numsSize, int* returnSize)
{
int left = 0;
int right = numsSize - 1;
while(left < right)
{
if ((nums[left] & 1) == 1)
{
left++;
continue;
}
if ((nums[right] & 1) == 0)
{
right--;
continue;
}
Swap(&nums[left], &nums[right]);
}
*returnSize = numsSize;
return nums;
}
快慢指针
void Swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
int* exchange(int* nums, int numsSize, int* returnSize)
{
int fast = 0;
int low = 0;
while (fast < numsSize)
{
if ((nums[fast] & 1) == 1)
{
Swap(&nums[low], &nums[fast]);
low++;
}
fast++;
}
*returnSize = numsSize;
return nums;
}