输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。
示例 1:
输入:nums = [1,2,3,4]
输出:[1,3,2,4]
注:[3,1,2,4] 也是正确的答案之一。
限制:
题目信息:前半和后半
双指针,两遍向里面遍历调换位置,复杂度 O(n)
function exchange(nums: number[]): number[] {
for (let i = 0, j = nums.length - 1; i < j; ) {
if (isEven(nums[i]) && isOdd(nums[j])) {
let t = nums[i]
nums[i] = nums[j]
nums[j] = t
} else {
if (isOdd(nums[i])) {
i++
}
if (isEven(nums[j])) {
j--
}
}
}
return nums
}
function isOdd(n: number) {
return n % 2 === 1
}
function isEven(n: number) {
return n % 2 === 0
}