解题思路
和上一题中的差别在于该题目不要求稳定性了。所以可以采用插排中partition的思想,左右两个指针,向中间扫描,左边遇到偶数,右边遇到奇数时停止并交换,直到两指针重合。
class Solution:
def reOrderArrayTwo(self , array: List[int]) -> List[int]:
pre, end = 0, len(array)-1
while pre < end:
while array[pre] % 2 == 1: pre += 1
while array[end] % 2 == 0: end -= 1
if pre >= end: break
array[pre], array[end] = array[end], array[pre]
pre += 1
end -= 1
return array