当前位置: 代码迷 >> 综合 >> leetcode 922 Sort Array By Parity II (奇偶性排序)
  详细解决方案

leetcode 922 Sort Array By Parity II (奇偶性排序)

热度:64   发布时间:2023-11-17 00:57:40.0

题目要求

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

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

您可以返回满足此条件的任何答案数组

解题思路

要保证当A [i]为奇数时,i就是奇数; 只要A [i]是偶数,i就是偶数。
我们使用两个指针分别指向第一个偶数位和奇数位,然后分别判断偶数位和奇数位是否符合题意,当出现不符合的时候进行偶数位和奇数位交换。

主要代码c++

class Solution {
    
public:vector<int> sortArrayByParityII(vector<int>& A) {
    for(int i=0, j=1; i<A.size(); i+=2, j+=2){
    while(i < A.size() && A[i]%2 == 0) i+=2; //偶数位保证偶数,出现不符合的时候记录下标while(j < A.size() && A[j]%2 == 1) j+=2; //奇数位保证奇数,出现不符合的时候记录下标if(i < A.size()) swap(A[i], A[j]); // 否则就交换}return A;}
};
  相关解决方案