输入一个长度为 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) }