zoukankan      html  css  js  c++  java
  • leetcode922 Sort Array By Parity II

     1 """
     2 Given an array A of non-negative integers, half of the integers in A are odd, and half of the integers are even.
     3 Sort the array so that whenever A[i] is odd, i is odd; and whenever A[i] is even, i is even.
     4 You may return any answer array that satisfies this condition.
     5 Example 1:
     6 Input: [4,2,5,7]
     7 Output: [4,5,2,7]
     8 Explanation: [4,7,2,5], [2,5,4,7], [2,7,4,5] would also have been accepted.
     9 """
    10 """
    11 提供三种方法,传送门:https://blog.csdn.net/fuxuemingzhu/article/details/83045735
    12 1.直接使用两个数组分别存放奇数和偶数,然后结果就是在这两个里面来回的选取就好了。
    13 """
    14 
    15 class Solution1:
    16     def sortArrayByParityII(self, A):
    17         odd = [x for x in A if x % 2 == 1]  #奇数入栈
    18         even = [x for x in A if x % 2 == 0] #偶数入栈
    19         res = []
    20         iseven = True  #!!!判断奇偶数
    21         while odd or even:
    22             if iseven:
    23                 res.append(even.pop())  #偶数写入结果
    24             else:
    25                 res.append(odd.pop())   #奇数写入结果
    26             iseven = not iseven   #!!!下一个变为偶数
    27         return res
    28 
    29 """
    30 先对A进行排序,使得偶数都在前面,奇数都在后面,
    31 然后每次从前从后各取一个数,然后放到结果里就好了
    32 """
    33 class Solution2:
    34     def sortArrayByParityII(self, A):
    35         A.sort(key=lambda x: x % 2)#!!!此方法可以将偶数防前面,奇数放后面 [0, 1]排序
    36         N = len(A)
    37         res = []
    38         for i in range(N // 2):
    39             #" / "就表示 浮点数除法,返回浮点结果;" // "表示整数除法。
    40             res.append(A[i])  #添加偶数
    41             res.append(A[N - 1 - i]) #添加奇数
    42         return res
    43 
    44 """
    45 先把结果数组创建好,
    46 然后使用奇偶数两个变量保存位置,
    47 然后判断A中的每个数字是奇数还是偶数,
    48 对应放到奇偶位置就行了。
    49 """
    50 class Solution3:
    51     def sortArrayByParityII(self, A):
    52         """
    53         :type A: List[int]
    54         :rtype: List[int]
    55         """
    56         N = len(A)
    57         res = [0] * N
    58         even, odd = 0, 1
    59         for a in A:
    60             if a % 2 == 1:
    61                 res[odd] = a
    62                 odd += 2  #!!!关键点,每次加2
    63             else:
    64                 res[even] = a
    65                 even += 2  #!!!
    66         return res
  • 相关阅读:
    C语言II博客作业01
    学期总结
    C语言|博客作业01
    C语言|博客作业02
    C语言|博客作业08
    C语言|博客作业07
    C语言|博客作业06
    C语言|博客作业05
    C语言|博客作业04
    c语言||博客作业04
  • 原文地址:https://www.cnblogs.com/yawenw/p/12271061.html
Copyright © 2011-2022 走看看