本文共 1272 字,大约阅读时间需要 4 分钟。
给定一个非负整数数组 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 Listclass 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 lisprint(Solution.sortArrayByParityII(1,[4,2,5,7]))思路二: 双指针,一个指偶数一个指奇数
from typing import Listclass 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 Aprint(Solution.sortArrayByParityII(1,[4,2,5,7]))
转载地址:http://gyxki.baihongyu.com/