题目
思路
partition模板,双指针。
先把负数和正数用partition分开,然后交换。
代码
class Solution:
"""
@param: A: An integer array.
@return: nothing
"""
def reverse(self, A, i, j):
while i < j:
A[i], A[j] = A[j], A[i]
i += 1; j -= 1
def partition(self, A, i, j):
while i <= j:
while i <= j and A[i] < 0: i += 1
while i <= j and A[j] > 0: j -= 1
if i <= j:
A[i], A[j] = A[j], A[i]
i += 1; j -= 1
def rerange(self, A):
# write your code here
length = len(A)
i = 0; j = length - 1
self.partition(A, i, j)
i = 0; j = length - 1
if length % 2 and A:
if A[length // 2] > 0: j -= 1
else: i += 1
while i < j:
A[i], A[j] = A[j], A[i]
i += 2; j -= 2