[LeetCode]#922. Sort Array By Parity II

Environment: Python 3.8

Key technique: %

Given an array A of non-negative integers, half of the integers in A are odd, and half of the integers are even.

Sort the array so that whenever A[i] is odd, i is odd; and whenever A[i] is even, i is even.

You may return any answer array that satisfies this condition.

Example 1:

Input: [4,2,5,7]
Output: [4,5,2,7]
Explanation: [4,7,2,5], [2,5,4,7], [2,7,4,5] would also have been accepted.

Analysis:

  1. Create a None list and size is same as input A.
  2. Create two variable t1=0, t2=1.
  3. If A[i] is even, ans[t1] is A[i]. t1=t1+2
  4. If A[i] is odd, ans[t2] is A[i]. t2=t2+2
  5. Return ans

Solution:

class Solution:
def sortArrayByParityII(self, A):
ans=[None]*len(A)
t1=0
t2=1
for i in A:
if i % 2==0:
ans[t1]=i
t1+=2
else:
ans[t2]=i
t2+=2
return ans

Submissions:

Reference:

https://leetcode.com/problems/sort-array-by-parity-ii/discuss/1003699/Python-3-two-pointers-O(n)

Interesting in any computer science.