美文网首页剑指offer算法系列——Swift版本
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

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

作者: FY_Chao | 来源:发表于2021-01-12 14:39 被阅读0次

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

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

     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
        }
    

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

    相关文章

      网友评论

        本文标题:剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

        本文链接:https://www.haomeiwen.com/subject/tcasaktx.html