题目描述:
给定一个非负整数数组 A
,返回一个由 A
的所有偶数元素组成的数组,后面跟 A
的所有奇数元素。
你可以返回满足此条件的任何数组作为答案。
示例:
输入:[3,1,2,4] 输出:[2,4,3,1] 输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。
解题思路:
方法一:
这个方法比较不好理解,如果不明白可以看方法二。
设置两个指针变量,一个快一个慢, i 指向当前的奇数,而 j 指向偶数,
如果判断到是偶数就和 i 指向的奇数交换,直到遍历完整个列表
代码实现:
class Solution(object):
def sortArrayByParity(self, A):
"""
:type A: List[int]
:rtype: List[int]
"""
i = 0 # 指向靠前的奇数
for j in range(len(A)):
if A[j] % 2 == 0:
A[i], A[j] = A[j], A[i] # 交换奇数和偶数,使得奇数在后,偶数在前
i += 1 # 如果j指向偶数,i自增
return A
方法二:用一个新的列表重新构造原来的列表
代码实现:
def sortArrayByParity(A):
"""
:type A: List[int]
:rtype: List[int]
"""
l = []
for x in A:
if x % 2 == 0:
l.insert(0, x) #偶数插入到列表最前面
else:
l.append(x) #奇数则插入到列表最后
return l
关注我的公众号免费获取海量python视频教程!!!