题目链接:
输入一个整数数组, 实现一个函数来调整该数组中数字的顺序, 使得所有奇数位于数组的前半部分, 所有偶数位于数组的后半部分.
示例:
输入: nums = [1,2,3,4]
输出:[1,3,2,4]
注:[3,1,2,4] 也是正确的答案之一.
提示:
- 1 <= nums.length <= 50000
- 1 <= nums[i] <= 10000
双指针与位运算
- /**
- * Note: The returned array must be malloced, assume caller calls free().
- */
- int* exchange(int* nums, int numsSize, int* returnSize){
- int i=0,j=numsSize-1;
- while(i<j){
- while(i<j&&nums[i]&1){
- i++;
- }
- while(i<j&&!(nums[j]&1)){
- j--;
- }
- if(i<j){
- int tmp=nums[i];
- nums[i]=nums[j];
- nums[j]=tmp;
- }
- }
- *returnSize=numsSize;
- return nums;
- }
来源: http://www.bubuko.com/infodetail-3446298.html