标签:空间 style 数组 条件 元素 交换 根据 返回 mamicode
1、题目
1 //记得自己好像做过这道题 2 //思路1:找出最大值;申请大小位max+1的vector;A[j]==i,则vector对应i位置加1;释放A,根据vector中的数 3 //值重新存进A中; 4 //思路2:申请两个vector,一个全部装偶数,一个全部装奇数,然后拼接两个vector 5 //思路3:双指针法:遍历数组A;偶数从头开始存放,奇数从尾部开始存放;当j-i==0时候停止,本文选思路3 6 //因为思路3只用申请一个辅助空间,遍历一次 7 class Solution { 8 public: 9 vector<int> sortArrayByParity(vector<int>& A) { 10 vector<int>a(A.size()); 11 int i=0; 12 int j=A.size()-1;//定义i和j双指针 13 int k=0; 14 while(j-i>=0){ 15 if(A[k]%2==0) { 16 a[i]=A[k]; 17 i=i+1; 18 } 19 else{ 20 a[j]=A[k]; 21 j--; 22 } 23 k++; 24 } 25 return a; 26 } 27 };
思路四:
1 class Solution { 2 public: 3 vector<int> sortArrayByParity(vector<int>& A) { 4 int i=0,j=0; 5 int le=A.size(); 6 while(i<le&&j<le) 7 { 8 if(A[j]%2==0) {swap(A[i],A[j]);i++;j++;} 9 else j++; 10 } 11 return A; 12 13 } 14 };
发现运行起来,思路更慢!!还不如思路3!!
标签:空间 style 数组 条件 元素 交换 根据 返回 mamicode
原文地址:https://www.cnblogs.com/hehesunshine/p/11722862.html