905-sort-array-by-parity¶
Try it on leetcode
Description¶
Given an integer array nums
, move all the even integers at the beginning of the array followed by all the odd integers.
Return any array that satisfies this condition.
Example 1:
Input: nums = [3,1,2,4] Output: [2,4,3,1] Explanation: The outputs [4,2,3,1], [2,4,1,3], and [4,2,1,3] would also be accepted.
Example 2:
Input: nums = [0] Output: [0]
Constraints:
1 <= nums.length <= 5000
0 <= nums[i] <= 5000
Solution(Python)¶
class Solution:
def sortArrayByParity(self, nums: List[int]) -> List[int]:
return self.inPlace(nums)
# Time Complexity: O(NlogN)
# Space Complexity: O(N)
def sorting(self, nums):
nums.sort(key=lambda x: x % 2)
return nums
# Time Complexity: O(N)
# Space Complexity: O(N)
def twopass(self, nums):
return [x for x in nums if not x % 2] + [x for x in nums if x % 2]
# Time Complexity: O(N)
# Space Complexity: O(1)
def inPlace(self, nums):
i, j = 0, len(nums) - 1
while i < j:
i_par = nums[i] % 2
j_par = nums[j] % 2
if i_par and not j_par:
nums[i], nums[j] = nums[j], nums[i]
if not i_par:
i += 1
if j_par:
j -= 1
return nums