Skip to main content

905. Sort Array By Parity

Python

Two Pointer - Slow and Fast

class Solution:
def sortArrayByParity(self, nums: List[int]) -> List[int]:
if len(nums) < 2:
return nums

cur, r = 0, 0

while r < len(nums):
if nums[cur] % 2 == 0:
cur += 1
r = cur
continue

if nums[r] % 2 != 0:
r += 1
continue

nums[cur], nums[r] = nums[r], nums[cur]
cur += 1

return nums

Two Pointer - Left Right Approaching

class Solution:
def sortArrayByParity(self, nums: List[int]) -> List[int]:
if len(nums) < 2:
return nums

left, right = 0, len(nums)-1

while left < right:
if nums[left] % 2 == 0:
left += 1
elif nums[right] % 2 != 0:
right -= 1
else:
nums[left], nums[right] = nums[right], nums[left]
left += 1
right -= 1

return nums