922.按奇偶排序

    技术2022-07-10  147

    思路1 用交换的思想,如果当前的不符合,就和后一位交换,如果交换之后还不符合,就和后面三位交换。保证对于当前的这一位元素操作结束后,它已经在合适的位置上。

    vector<int> sortArrayByParityII(vector<int>& A) { int size=A.size(),temp=A[0],n=1; for(int i=0;i<size-1;i++){ n=1; while((i%2==0&&A[i]%2==1)||(i%2==1&&A[i]%2==0)){ temp=A[i]; A[i]=A[i+n]; A[i+n]=temp;//如果不合要求,就和后一位交换 n+=2; } } return A; }

    效果不太好,时间复杂度是n的平方 思路2 再弄两个vector数组,一个存奇数一个存偶数,遍历完a了再赋值过去

    vector<int> sortArrayByParityII(vector<int>& A) { int size=A.size(); vector<int> B,C; for(int i=0;i<size;i++){ if(A[i]%2==0){B.push_back(A[i]);} else C.push_back(A[i]); } int k=0; for(int j=0;j<size-1;j+=2){ A[j]=B[k]; A[j+1]=C[k]; k++; } return A; }

    复杂度是On

    Processed: 0.010, SQL: 9