輸入一個整數(shù)數(shù)組,實現(xiàn)一個函數(shù)來調(diào)整該數(shù)組中數(shù)字的順序,使得所有奇數(shù)位于數(shù)組的前半部分,所有偶數(shù)位于數(shù)組的后半部分。
因為數(shù)組的排序沒有要求。首先想到的是雙指針,頭尾各一個指針,按照頭指針從左開始右移找到一個偶數(shù)、尾指針從右往左移找到一個奇數(shù)然后交換。
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
}
原書中的解答還考慮的了擴(kuò)展的問題,提供了更加解耦的方法實現(xiàn)。有興趣的小伙伴可以自行查閱。