leetcode922:按奇偶排序数组 II

思路:
将偶数和奇数分别放在even和odd列表中,然后利用zip()和chain()函数,将两个列表交叉组合在一起。
重点是利用的zip函数和chain函数。
zip():
注意:zip() 返回的是一个元组对象。如需展示列表,需手动 list() 转换。
zip(*) 与zip()相反,相当于解压
示例:
在这里插入图片描述
chain():
使用 chain() 的一个常见场景是当你想对不同的集合中所有元素执行某些操作的时候。
注意在使用之前要导入: from itertools import chain
示例:

 from itertools import chain
 a = [1, 2, 3, 4]
 b = ['x', 'y', 'z']
 for x in chain(a, b):
	 print(x)

1
2
3
4
x
y
z
>>>

from itertools import chain
class Solution(object):
    def sortArrayByParityII(self, A):
        """
        :type A: List[int]
        :rtype: List[int]
        """
        num = []
        odd = [] #放奇数
        even = [] #放偶数
        for i in A:
            if i%2 == 0:
                even.append(i)
            else:
                odd.append(i)
        return list(chain(*zip(even,odd)))
               

生成与A等长的全零列表res,利用两个游标,一个用来给res填充奇数,一个用来填充偶数。

class Solution(object):
    def sortArrayByParityII(self, A):
        """
        :type A: List[int]
        :rtype: List[int]
        """
        res = [0 for _ in range(len(A))]
        cur1,cur2 = 0,0
        for i in A:
            if i%2 == 0:
                res[2*cur1] = i
                cur1+=1
            else:
                res[2*cur2+1] = i
                cur2+=1
        return res
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值