""" 0905.1 - Solution 1 - Two-Pointer Swap """
#####################################################################################
# Imports
#####################################################################################
from typing import List
#####################################################################################
# Classes
#####################################################################################
class Solution:
"""Solution Class"""
def sortArrayByParity(self, nums: List[int]) -> List[int]:
"""Sort Array By Parity Function"""
left, right = 0, len(nums) - 1
while left < right:
if nums[left] % 2 == 1 and nums[right] % 2 == 0:
nums[left], nums[right] = nums[right], nums[left]
if nums[left] % 2 == 0:
left += 1
if nums[right] % 2 == 1:
right -= 1
return nums
#####################################################################################
# Functions
#####################################################################################
def testcase():
"""Test Function"""
print(Solution().sortArrayByParity([3, 1, 2, 4]))
print(Solution().sortArrayByParity([0]))
print(Solution().sortArrayByParity([1, 3, 5, 2, 4, 6]))
#####################################################################################
# Main
#####################################################################################
if __name__ == "__main__":
testcase()
""" 0905.2 - Solution 2 - List Comprehension """
#####################################################################################
# Imports
#####################################################################################
from typing import List
#####################################################################################
# Classes
#####################################################################################
class Solution:
"""Solution Class"""
def sortArrayByParity(self, nums: List[int]) -> List[int]:
"""Sort Array By Parity Function"""
return [x for x in nums if x % 2 == 0] + [x for x in nums if x % 2 == 1]
#####################################################################################
# Functions
#####################################################################################
def testcase():
"""Test Function"""
print(Solution().sortArrayByParity([3, 1, 2, 4]))
print(Solution().sortArrayByParity([0]))
print(Solution().sortArrayByParity([1, 3, 5, 2, 4, 6]))
#####################################################################################
# Main
#####################################################################################
if __name__ == "__main__":
testcase()