题解 | #调整数组顺序使奇数位于偶数前面(一)#

调整数组顺序使奇数位于偶数前面(一)

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
};


全部评论

相关推荐

面向对象的火龙果很爱...:去吃一顿炸鸡就走
点赞 评论 收藏
分享
强大的马里奥:不太可能,我校计算机硕士就业率99%
点赞 评论 收藏
分享
05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务