劍指offer題目描述 輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序,使得所有的奇數位於陣列的前半部分,所有的偶數位於位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。
阿新 • • 發佈:2019-02-01
牛客網劍指offer線上程式設計:
方法一:利用兩個指標,實現了是陣列奇數在前偶數在後,但通過不了測試用例,因為改變了奇數和奇數,偶數和偶數之間的相對位置
class Solution {
public:void reOrderArray(vector<int> &array)
{
vector<int>::iterator it1,it2;
it1=array.begin();
it2=array.end();
while(it1<it2)
{
while(it1<it2&&(*it1&0x1)==1)
it1++;
while(it1<it2&&(*it2&0x1)==0)
it2--;
if(it1<it2)
{
int temp=*it1;
*it1=*it2;
*it2=temp;
}
}
}
};
方法二:建一個臨時陣列,第一次迴圈是奇數就放進去,第二次迴圈放偶數,空間複雜度高,通過測試用例
class Solution {
public:
void reOrderArray(vector<int> &array)
{
vector<int>::iterator it;
vector<int> array_temp;
for(it=array.begin();it!=array.end();it++)
{
if((*it&0x1)==1)
array_temp.push_back(*it);
}
for(it=array.begin();it!=array.end();it++)
{
if((*it&0x1)==0)
array_temp.push_back(*it);
}
array=array_temp;
}
};