解题思路是采用递归,跳出条件是:两两相加不再是奇数。
附上代码:
#include <iostream>
#include <vector>
using namespace std;
class Solution
{
public:
int minleng(vector<int> &num,int n)
{
vector<int> ret = myCount(num,n);
return ret.size();
}
vector<int> myCount(vector<int> &num,int n)
{
int flag =0;
vector<int> ret(num);
if(ret.size()==1)
return ret;
for(int i=0;i<ret.size();i++)
{
if((ret[i]+ret[i+1])%2!=0)
{
flag =1;
ret.erase(ret.begin()+i);
ret.erase(ret.begin()+i);
if(flag == 1)
break;
}
}
if(flag==0)
return ret;
return myCount(ret,ret.size());
}
};
int main()
{
int n;
cin>>n;
vector<int> num;
for(int i=0;i<n;i++)
{
int r;
cin>>r;
num.push_back(r);
}
Solution s;
cout<<s.minleng(num,n);
return 0;
}
解题过程中,对vector使用不够熟练,对vector删除元素机制不了解,基础还是最重要的!