欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

按奇偶排序数组

程序员文章站 2022-07-02 09:14:17
922. 按奇偶排序数组 II给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。你可以返回任何满足上述条件的数组作为答案。今天的题目很简单,看完题目后我反手就写出了答案(感觉自己又行了O(∩_∩)O哈哈~),下面是Python的代码:class Solution: def sortArrayByParityII(self, A: List[int]) -> List[i...

922. 按奇偶排序数组 II

给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。

对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。

你可以返回任何满足上述条件的数组作为答案。
按奇偶排序数组
今天的题目很简单,看完题目后我反手就写出了答案(感觉自己又行了O(∩_∩)O哈哈~),下面是Python的代码:

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

运行效果:
按奇偶排序数组
解法二在原数组上重新排序,Python代码如下:

class Solution:
    def sortArrayByParityII(self, A: List[int]) -> List[int]:
        i,j=0,1
        while(i<len(A) or j<len(A)):
            while(i<len(A) and A[i] % 2 is 0):
                i+=2
            while(j<len(A) and A[j] % 2 is not 0):
                j+=2
            if(i<len(A) and j<len(A)):
                A[i],A[j]=A[j],A[i]
        return A

运行效果:
按奇偶排序数组
效果也没差多少,不知道为啥,按照道理上一个代码的空间复杂度是O(n)这个代码的空间复杂度是O(1),但是实际效果差不多,没搞明白(┓( ´∀` )┏)。

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sort-array-by-parity-ii

本文地址:https://blog.csdn.net/qq_41978896/article/details/109635810