输入一个长度为 n 整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
数据范围:
,数组中每个数的值
要求:时间复杂度
,空间复杂度
进阶:时间复杂度
,空间复杂度
[1,2,3,4]
[1,3,2,4]
[2,4,6,5,7]
[5,7,2,4,6]
[1,3,5,6,7]
[1,3,5,7,6]
function reOrderArray( array ) {
let numOfEven = 0;
for (let i = 0; i < array.length; i++) {
if (array[i] % 2 === 0) numOfEven++;
}
// 记录偶数移动的次数
let moveTimesOfEven = 0;
let index = 0;
// 移动的次数是偶数个数时才能保证偶数顺序和输入一样
while (moveTimesOfEven < numOfEven) {
if (array[index] % 2 === 0) {
let temp = array[index];
for (let j = index; j < array.length - 1; j++) {
array[j] = array[j + 1];
}
array[array.length - 1] = temp;
// 当前是偶数时index不加,因为index位置的是下一位移动过来的,继续判断奇偶
moveTimesOfEven++;
}
else{
index++;
}
}
return array;
}
function reOrderArray( array ) {
const evenArr = [];
const oddArr = [];
array.forEach(item => {
item % 2 === 0 ? evenArr.push(item) : oddArr.push(item)
})
return [...oddArr, ...evenArr]
} function reOrderArray( array ) {
let i = [],j = [];
array.forEach(item => {
item % 2 == 0 ? j.push(item) : i.push(item);
})
return [...i,...j]
}
module.exports = {
reOrderArray : reOrderArray
}; function reOrderArray( array ) {
// write code here
let arr1 = [],arr2 = []
for(let item of array){
if(item % 2 == 0) arr2.push(item)
else arr1.push(item)
}
return arr1.concat(arr2)
}