给定一个非负整数数组 A
, A 中一半整数是奇数,一半整数是偶数。
对数组进行排序,以便当 A[i]
为奇数时,i
也是奇数;当 A[i]
为偶数时, i
也是偶数。
你可以返回任何满足上述条件的数组作为答案。
示例:
复制代码
1
2
3
4输入:[4,2,5,7] 输出:[4,5,2,7] 解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。
提示:
2 <= A.length <= 20000
A.length % 2 == 0
0 <= A[i] <= 1000
C
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39/** * Return an array of size *returnSize. * Note: The returned array must be malloced, assume caller calls free(). */ int* sortArrayByParityII(int* A, int ASize, int* returnSize) { int n=ASize; int* M=(int*)malloc(sizeof(int)*n/2); int* N=(int*)malloc(sizeof(int)*n/2); int* res=(int*)malloc(sizeof(int)*n); int k=0; int r=0; for(int i=0;i<n;i++) { if(A[i]%2==1) { M[k]=A[i]; k++; } else { N[r]=A[i]; r++; } } for(int i=0;i<n;i++) { if(i%2==0) { res[i]=N[i/2]; } else { res[i]=M[i/2]; } } *returnSize=n; return res; }
C++
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33class Solution { public: vector<int> sortArrayByParityII(vector<int>& A) { int n=A.size(); vector<int> M; vector<int> N; for(int i=0;i<n;i++) { if(A[i]%2==1) { M.push_back(A[i]); } else { N.push_back(A[i]); } } vector<int> res; for(int i=0;i<n;i++) { if(i%2==0) { res.push_back(N[i/2]); } else { res.push_back(M[i/2]); } } return res; } };
python
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21class Solution: def sortArrayByParityII(self, A): """ :type A: List[int] :rtype: List[int] """ n=len(A) M=[] N=[] for i in range(n): if A[i]%2==1: M.append(A[i]) else: N.append(A[i]) res=[] for i in range(n): if i%2==0: res.append(N[i//2]) else: res.append(M[i//2]) return res
最后
以上就是眼睛大野狼最近收集整理的关于LeetCode 922. 按奇偶排序数组 II(C、C++、python)的全部内容,更多相关LeetCode内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复