方法一:双指针
思路:采用对撞双指针的思想
步骤:
- odd指向从头开始的奇数元素,even指向数组从后向前开始的偶数元素
- 循环:
- 如果odd指向奇数元素并且even指向偶数元素就进行交换
- 否则就跳过
func sortArrayByParity(nums []int) []int {//odd指向前面的奇数元素//even指向后面的偶数元素odd, even := 0, len(nums)-1for odd < even {//如果odd指向偶数元素就跳过for odd < even && nums[odd] & 1 != 1 {odd++}//如果even指向奇数元素就跳过for odd < even && nums[even] & 1 != 0 {even--}//如果odd指向奇数,even指向偶数就进行交换nums[odd], nums[even] = nums[even], nums[odd]}return nums}
