版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/maotianyi941005/article/details/85003172
922. Sort Array By Parity II (easy)
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 wheneverA[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.
题目要求偶数在偶数位,奇数在奇数位,顺序可以随便,也不要求inplace
1 奇偶分离再错位插入(not fast
class Solution:
def sortArrayByParityII(self, A):
"""
:type A: List[int]
:rtype: List[int]
"""
'''search odd num in left & odd num in right'''
odd = []
even = []
for x in A:
if x % 2 == 0:even.append(x)
else:odd.append(x)
A.clear()
for idx,x in enumerate(even):A.insert(idx*2, even[idx])
for idx,x in enumerate(odd):A.insert(idx*2 + 1, odd[idx])
return A
untime: 236 ms, faster than 25.10% of Python3
2 two points判断时就插入(fast
class Solution:
def sortArrayByParityII(self, A):
"""
:type A: List[int]
:rtype: List[int]
"""
even = 0
odd = 1
l = A.copy()
length = len(A)
for x in A:
if x % 2 == 0:
l[even] = x
if(even < length - 2):even += 2
else:
l[odd] = x
if(odd < length):odd += 2
return l
Runtime: 140 ms, faster than 95.16% of Python3