剑指|剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。【剑指|剑指 Offer 21. 调整数组顺序使奇数位于偶数前面】因为数组的排序没有要求。首先想到的是双指针,头尾各一个指针,按照头指针从左开始右移找到一个偶数、尾指针从右往左移找到一个奇数然后交换。
func exchange(_ nums: [Int]) -> [Int] {
var nums = nums
var left = 0
var right = nums.count - 1while 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 13. 机器人的运动范围(dfs,bfs)
- 【秀娟习惯养成记—2021.3.11】
- 2021.4.8日《我们为什么无法摆脱慢性疾病》常斌
- 2021.5.5|2021.5.5 五一第五天
- 2021.5.27阅读思考题
- 剑指offer60.n个骰子的点数
- 剑指offer——最小的K个数
- 2021.3.9
- mac|mac 磁盘空间的其他文件怎么处理
- Android|年后备战金三银四(Android面试吃透这一篇就没有拿不到的offer......)