题目描述:
给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。
你可以返回满足此条件的任何数组作为答案。
示例:
输入:[3,1,2,4]
输出:[2,4,3,1]
输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。
解题思路:
1. 同时定义两个指针,一个指向开头,一个指向结尾。把结尾的偶数换到前面即可
2. i从前往后移动,移到第一个不为偶数的地方
3. j从后向前移动,移动第一个不为奇数的地方
4. 交换位置,同时指针继续向对方靠拢
golang示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
func SortArrayByParity(nums []int) []int {
i := 0
j := len(nums) - 1
for i < j {
//1. i从前往后移动,移到第一个不为偶数的地方
if i < j && nums[i] % 2 == 0 {
i++
continue
}
//2. j从后向前移动,移动第一个不为奇数的地方
if i < j && nums[j] % 2 != 0 {
j--
continue
}
//3. 交换位置,同时指针继续向对方靠拢
if i < j && nums[i] % 2 != 0 && nums[j] % 2 == 0 {
nums[i], nums[j] = nums[j], nums[i]
i++
j--
}
}
return nums
}
|