剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。

因为数组的排序没有要求。首先想到的是双指针,头尾各一个指针,按照头指针从左开始右移找到一个偶数、尾指针从右往左移找到一个奇数然后交换。

 func exchange(_ nums: [Int]) -> [Int] {
        var nums = nums
        var left = 0
        var right = nums.count - 1
        
        while left < right {
            while left < right && nums[left] % 2 == 1 {
                left += 1
            }
            while left < right && nums[right] % 2 == 0 {
                right -= 1
            }
            if left < right {
                nums.swapAt(left, right)
            }
        }
     return nums
    }

原书中的解答还考虑的了扩展的问题,提供了更加解耦的方法实现。有兴趣的小伙伴可以自行查阅。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容