905 sort-array-by-parity

class Solution:
    def sortArrayByParity(self, A: List[int]) -> List[int]:
        first = 0
        last = len(A)-1
        while first<last:
            m = A[first]
            n = A[last]
            if (m&1 is 1) and (n&1 is 0):
                A[first],A[last] = A[last],A[first]
                first += 1
                last -= 1
            elif m&1 is 0:
                first += 1
            elif n&1 is 1:
                last -= 1
        
        return A

  88ms,13.9M

优化一:

class Solution:
    def sortArrayByParity(self, A: List[int]) -> List[int]:
        first = 0
        last = len(A)
        for i in range(last):
            a = A[i]
            if a&1==0:
                first += 1
            else:
                for j in range(last,first,-1):
                    if A[j-1]&1==0:
                        A[first],A[j-1] = A[j-1],A[first]
                        last = j
                        first += 1
                        break
        return A

  80ms,14M

 

posted @ 2019-02-27 09:46  bluedream1000  阅读(132)  评论(0编辑  收藏  举报