我是靠谱客的博主 甜美抽屉,最近开发中收集的这篇文章主要介绍LeetCode 922[Python]. 按奇偶排序数组II.1.题目描述2.解题思路&代码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

LeetCode 922[Python]. 按奇偶排序数组II.

  • 1.题目描述
  • 2.解题思路&代码

1.题目描述

给定一个非负整数数组 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] 也会被接受。

提示

  1. 2 <= A.length <= 20000
  2. A.length % 2 == 0
  3. 0 <= A[i] <= 1000

2.解题思路&代码

class Solution(object):
    def sortArrayByParityII(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        # 由题可知,nums的长度一定是偶数
        if len(nums) % 2 != 0:
            return

        # 判断奇数和偶数的个数是否相同
        even_num = 0
        odd_num = 0
        for i in nums:
            if i % 2 == 0:
                even_num += 1
            if i % 2 == 1:
                odd_num += 1
        if even_num != odd_num:
            return
        else:
            even_list = []
            odd_list = []
            for i in range(0, len(nums)):
                if nums[i] % 2 == 0:
                    even_list.append(nums[i])
                    # 用*给奇数留出位置,方便后续进行替换
                    even_list.append('*')
                if nums[i] % 2 == 1:
                    odd_list.append(nums[i])
            for i in range(0, len(even_list)):
                if i % 2 == 1:
                    for j in (len(odd_list) - 1, -1, -1):
                        # 用奇数替换掉偶数列中的*
                        even_list[i] = odd_list[j]
                        del odd_list[j]
                        break
            return even_list

最后

以上就是甜美抽屉为你收集整理的LeetCode 922[Python]. 按奇偶排序数组II.1.题目描述2.解题思路&代码的全部内容,希望文章能够帮你解决LeetCode 922[Python]. 按奇偶排序数组II.1.题目描述2.解题思路&代码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(186)

评论列表共有 0 条评论

立即
投稿
返回
顶部