[路飞]调整数组顺序使奇数在偶数前面

184 阅读1分钟

记录 1 道算法题

调整数组顺序使奇数在偶数前面

leetcode-cn.com/problems/di…


要求:给一个数组,将来里面的奇数都放到左边,偶数放到右边。

这道题非常简单,只需要单指针进行遍历就可以实现,将每一个奇数都放到左边,每放一次,指针往后挪一位。

难度稍微提升一点的同类题可以看这道颜色分类

    function exchange(nums) {
        let a = 0
        for(let i = 0; i < nums.length; i++) {
            const n = nums[i]
            // 奇数就交换位置,同时更新指针
            if (n % 2 !== 0) {
                swap(nums, i, a)
                a++
            }
        }
        
        return nums
    }
    
    function swap(arr, a, b) {
        const t = arr[a]
        arr[a] = arr[b]
        arr[b] = t
    }