题解 | #调整数组顺序使奇数位于偶数前面(一)#
调整数组顺序使奇数位于偶数前面(一)
https://www.nowcoder.com/practice/ef1f53ef31ca408cada5093c8780f44b
解法1
时间复杂度O(n)
空间复杂度O(n)
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 * @return int整型一维数组 */ function reOrderArray( array ) { // write code here const evenArray = [] const oddArray = [] for(let i = 0; i < array.length; i ++) { if (array[i] & 1 === 1) { oddArray.push(array[i]) } else { evenArray.push(array[i]) } } return oddArray.concat(evenArray) } module.exports = { reOrderArray : reOrderArray };
解法2
时间复杂度O(n^2)
空间复杂度O(1)
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 * @return int整型一维数组 */ function reOrderArray( array ) { // write code here let oddIndex = 0 let evenIndex = 0 while (oddIndex < array.length && evenIndex < array.length) { // find first even while ((array[evenIndex] & 1) !== 0 && evenIndex < array.length) { evenIndex++ } // find first odd after the first even oddIndex = evenIndex + 1 while ((array[oddIndex] & 1) !== 1 && oddIndex < array.length) { oddIndex++ } if (oddIndex >= array.length || evenIndex >= array.length) break // swap const oddTemp = array[oddIndex] while (oddIndex > evenIndex) { array[oddIndex] = array[oddIndex - 1] oddIndex-- } array[evenIndex] = oddTemp evenIndex++ } return array } module.exports = { reOrderArray : reOrderArray };