- 按奇偶排序数组 II
给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。
对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。
你可以返回任何满足上述条件的数组作为答案。
示例:
输入:[4,2,5,7]
 输出:[4,5,2,7]
 解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。
思路一:
 用俩列表分别接受奇数偶数,然后分别提取
from typing import List
class Solution:
    def sortArrayByParityII(self, A: List[int]) -> List[int]:
        lis1 = [] #记录奇数
        lis2 = [] #记录偶数
        for i in A:
            if i % 2 :
                lis1.append(i)
                continue
            lis2.append(i)
        lis = []
        for i in range(len(A)//2):
            x = lis2[i]
            y = lis1[i]
            lis.append(x)
            lis.append(y)
        return lis
print(Solution.sortArrayByParityII(1,[4,2,5,7]))
 思路二:
 双指针,一个指偶数一个指奇数
from typing import List
class Solution(object):
    def sortArrayByParityII(self, A):
        """
        :type A: List[int]
        :rtype: List[int]
        """
        pEven = 0
        pOdd = 1
        while pEven < len(A) and pOdd < len(A):
            if A[pEven] % 2 != 0 and A[pOdd] % 2 != 1:
                A[pEven], A[pOdd] = A[pOdd], A[pEven]
                pEven += 2
                pOdd += 2
            elif A[pEven] % 2 != 0:
                pOdd += 2
            else:
                pEven += 2
        return A
print(Solution.sortArrayByParityII(1,[4,2,5,7]))
                
                










