题目
给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。
返回满足此条件的 任一数组 作为答案。
示例
示例 1:
输入:nums = [3,1,2,4]
输出:[2,4,3,1]
解释:[4,2,3,1]、[2,4,1,3] 和 [4,2,1,3]也会被视作正确答案。
示例 2:
输入:nums = [0]
输出:[0]
思路
1、采用双指针解法,左边找奇数, 右边找偶数,两边同时找到交换位置,找不到各自移动,直至两者相遇
2、列表表达式,先求偶数列表再求奇数列表,二者相加
题解
思路1
def sortArrayByParity(self, nums: List[int]) -> List[int]:
l, r = 0, len(nums)-1
while l <= r:
if nums[l] % 2 != 0 and nums[r] % 2 == 0:
nums[l], nums[r] = nums[r], nums[l]
l += 1
r -= 1
elif nums[l] % 2 == 0 and nums[r] % 2 == 0:
l += 1
elif nums[r] % 2 != 0 and nums[l] % 2 != 0:
r -= 1
else:
l+=1
r-=1
return nums
思路2
def sortArrayByParity(self, nums: List[int]) -> List[int]:
return [i for i in nums if i % 2 == 0] + [i for i in nums if i % 2 != 0]