leetcode922 Sort Array By Parity II

Posted yawenw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于leetcode922 Sort Array By Parity II的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 922 Sort Array By Parity II 解题报告

922. Sort Array By Parity II

Leetcode 922. Sort Array By Parity II

LeetCode 922. Sort Array By Parity II (按奇偶排序数组 II)

LEETCODE42922. Sort Array By Parity II

922. Sort Array By Parity II