LeetCode-922. 按奇偶排序数组 II

Posted 99xiaobei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode-922. 按奇偶排序数组 II相关的知识,希望对你有一定的参考价值。

给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。

对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。

你可以返回任何满足上述条件的数组作为答案。

 

示例:

输入:[4,2,5,7]
输出:[4,5,2,7]
解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。

 

提示:

  1. 2 <= A.length <= 20000
  2. A.length % 2 == 0
  3. 0 <= A[i] <= 1000

没什么好的思路,代码效率不高,新题也不知道大家还有没有什么好的解法。

代码:

 1 class Solution {
 2 public:
 3     vector<int> sortArrayByParityII(vector<int>& A) {
 4         int tmp = 0;
 5         int flag = 0;
 6         for (int i = 0; i < A.size(); i ++) {
 7             if (A[i] % 2 != 0&&i % 2 == 0) {
 8                 tmp = A[i];
 9                 for (int j = i + 1; j < A.size(); j ++) {
10                     if (A[j] % 2 == 0&&j % 2 != 0) {
11                         A[i] = A[j];
12                         A[j] = tmp;
13                         tmp = 0;
14                         flag = 1;
15                     }
16                     if (flag) {
17                         flag = 0;
18                         break;
19                     }
20                 }
21             }
22             else if (A[i] % 2 == 0 && i % 2 != 0) {
23                 tmp = A[i];
24                 for (int j = i + 1; j < A.size(); j = j + 2) {
25                     if (A[j] % 2 != 0) {
26                         A[i] = A[j];
27                         A[j] = tmp;
28                         tmp = 0;
29                         flag = 1;
30                     }
31                     if (flag) {
32                         flag = 0;
33                         break;
34                     }
35                 }
36             }    
37         }
38         return A;
39     }
40 };

 

以上是关于LeetCode-922. 按奇偶排序数组 II的主要内容,如果未能解决你的问题,请参考以下文章

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

leetcode922----按奇偶排序数组

leetcode922----按奇偶排序数组

leetcode922. 按奇偶排序数组Ⅱ

922. 按奇偶排序数组 II『简单』

922. 按奇偶排序数组 II