输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
示例:
输入:nums = [1,2,3,4] 输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。
提示:
1 <= nums.length <= 50000 1 <= nums[i] <= 10000
首尾双指针 定义头指针 leftleft ,尾指针 rightright . leftleft 一直往右移,直到它指向的值为偶数 rightright 一直往左移, 直到它指向的值为奇数 交换 nums[left]nums[left] 和 nums[right]nums[right] . 重复上述操作,直到 left == rightleft==right .
class Solution { public int[] exchange(int[] nums) { int i = 0, j = nums.length - 1, tmp; while(i < j) { while(i < j && (nums[i] & 1) == 1) i++; while(i < j && (nums[j] & 1) == 0) j--; tmp = nums[i]; nums[i] = nums[j]; nums[j] = tmp; } return nums; } }
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句