LeetCode:922. 按奇偶排序数组 II
发布日期:2021-05-08 02:38:22 浏览次数:20 分类:精选文章

本文共 1122 字,大约阅读时间需要 3 分钟。

题目:

922. 按奇偶排序数组 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] 也会被接受。
提示:2 <= A.length <= 20000A.length % 2 == 00 <= A[i] <= 1000

解题思路1:

用filter()函数,提取出偶数和奇数,并形成两个列表,最后把两个列表输出。
Code:

class Solution:    def sortArrayByParityII(self, A: List[int]) -> List[int]:        nums1 = list(filter(lambda a: a % 2 == 0, A))        nums2 = list(filter(lambda a: a % 2 == 1, A))        A[::2], A[1::2] = nums1, nums2        return A

运行结果:

解题思路2:
首先先建立两个列表,通过代码来判断出在A中位置不对的元素,然后在两个列表中分别存放奇数但索引不是奇数的元素和偶数但索引不是偶数的元素,最后在把两个元素在A中相互替换一下,输出A。
Code:

class Solution:    def sortArrayByParityII(self, A: List[int]) -> List[int]:        B = []        C = []        for i in range(len(A)):            if i % 2!= 0 and A[i] % 2 == 0:                B.append(i)  #在B中添加元素是偶数但索引不是偶数的数字            elif i % 2 == 0 and A[i] % 2 != 0:                 C.append(i)  #在A中添加元素是奇数但索引不是奇数的数字        for i in range(len(B)):  #遍历B中的特殊数字的个数            A[B[i]], A[C[i]] = A[C[i]], A[B[i]]  #把错误的元素位置相互交换一下        return A   #最后重新返回列表A

运行结果:

上一篇:LeetCode:136. 只出现一次的数字!!
下一篇:LeetCode:217. 存在重复元素

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2025年04月12日 15时18分51秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章