我是靠谱客的博主 甜美抽屉,最近开发中收集的这篇文章主要介绍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] 也会被接受。
提示:
2 <= A.length <= 20000
A.length % 2 == 0
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.解题思路&代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复