【python3】leetcode 922. Sort Array By Parity II (easy)
阿新 • • 發佈:2018-12-17
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