python力扣刷题记录——922. 按奇偶排序数组 II

题目:

给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。 对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i]
为偶数时, i 也是偶数。 你可以返回任何满足上述条件的数组作为答案。
python力扣刷题记录——922. 按奇偶排序数组 II_第1张图片

方法一:
执行用时: 192 ms
内存消耗: 17.4 MB

class Solution:
    def sortArrayByParityII(self, A: List[int]) -> List[int]:
        i = 0
        j = 1
        result = len(A)*[0]
        for num in A:
            if num % 2 == 0:
                result[i] = num
                i += 2
            else:
                result[j] = num
                j += 2
        return result

方法二:
执行用时: 212 ms
内存消耗: 17.3 MB

class Solution:
    def sortArrayByParityII(self, A: List[int]) -> List[int]:
        ou = [i for i in A if i%2]
        ji = [i for i in A if not i%2]
        result = [i for n in zip(ji, ou) for i in n]
        return result

补充:
zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

a = [1, 2, 3]
b = [4, 5, 6]
zipped = zip(a, b)  # 打包为元组的列表
d = [n for n in zipped]
print(d)
for i in d:
    print(i)

------
[(1, 4), (2, 5), (3, 6)]
(1, 4)
(2, 5)
(3, 6)

你可能感兴趣的:(数据结构,leetcode)