码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode922 Sort Array By Parity II

时间:2020-02-06 23:03:15      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:yii   bsp   cond   tis   seve   排序   返回   bee   detail   

 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

标签:yii   bsp   cond   tis   seve   排序   返回   bee   detail   

原文地址:https://www.cnblogs.com/yawenw/p/12271061.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!