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

 

posted @ 2020-02-06 21:45  yawenw  阅读(121)  评论(0编辑  收藏  举报