代码冗余+最后超时=写不出的一天
leetcode: 2007
/*
class Solution {
public:
void print(vector<int> &changed, map<int, vector<int>> &m){
for(int i=0; i<changed.size(); i++){
//m[changed[i]].push_back(i);
//cout<< " "<<changed[i]<<":"<< m[changed[i]].size();
}
cout<<endl;
}
vector<int> findOriginalArray(vector<int>& changed) {
int s=changed.size();
if(s%2==1){
return {};
}
map<int, vector<int>> m;
int z=0;
for(int i=0; i<s; i++){
if(changed[i]==0){
z++;
}
//cout<< " "<<changed[i]<<":"<< m[changed[i]].size();
}
if(z==changed.size() && z%2==0){
changed.resize(s/2);
return changed;
}else if(z==changed.size() && z%2==1){
return {};
}
sort(changed.begin(), changed.end());
for(int i=0; i<s; i++){
m[changed[i]].push_back(i);
}
//cout<<endl;
if(m.find(0)!=m.end()){
if(m[0].size()%2!=0){
return {};
}
}
vector<int>res;
map<int, vector<int>> rm;
int dixiao=0;
for(int i=0; i<s; i++){
//print(changed, m);
//cout<<"dixiao="<<dixiao<<endl;
if(m[changed[i]].size()==0){
dixiao++;
continue;
}
vector<int> tem2=m[changed[i]];
//vector<int> tem2=(m.find(changed[i]*2))!=m.end()?m[changed[i]]:vector<int>();
//vector<int> tem_2=(m.find(changed[i]/2))!=m.end()?(m.find(changed[i]/2))->second:vector<int>();
//cout << "tem2:"<<tem2.size() << endl;
//cout << "tem_2:"<<tem_2.size() << endl;
//if(tem2.size()==0 && tem_2.size()==0){
// return {};
//}
if(tem2.size()!=0 && changed[i]!=0){
//cout << "tem2"<<endl;
dixiao--;
for(int j=0; j<rm[changed[i]*2].size(); j++ ){
if(m[i].size()==0){
break;
}
if(rm[changed[i]*2][j]==m[i][m[i].size()-1]){
cout<< "tem2 return "<<rm[changed[i]][j] << endl;
return {};
}
}
if(m[changed[i]*2].size()==0){
return {};
} //rm[changed[i]*2].push_back(m[changed[i]*2][m[changed[i]*2].size()-1]);
m[changed[i]*2].pop_back(); //(m.find(changed[i]*2))->second.pop_back();
if(m[changed[i]].size()>0){
m[changed[i]].pop_back();
}
//print(changed, m);
res.push_back(changed[i]);
//cout<< "tem2 end"<<endl;
}
else if(tem_2.size()!=0 && changed[i]/2!=0 &&changed[i]!=1){
cout << "if tem_2" <<changed[i]<<endl;
for(int j=0; j<rm[changed[i]/2].size(); j++ ){
if(rm[changed[i]/2][j]==m[i][m[i].size()-1]){
cout<< "tem_2 return "<<rm[changed[i]][j] << endl;
return {};
}
}
if(m[changed[i]/2].size()==0){
return {};
}
rm[changed[i]/2].push_back(m[changed[i]/2][m[changed[i]/2].size()-1]); (m.find(changed[i]))->second.pop_back();
//res.push_back(changed[i]);
//print(changed, m);
}
else if(changed[i] == 0){
//cout << "if 0 1 :"<<changed[i]<< endl;
if(m[changed[i]].size()%2!=0){
return {};
}
for(int j=0; j<rm[changed[i]].size(); j++ ){
if(rm[changed[i]][j]==m[i][m[i].size()-1]){
cout<< "0 return "<<rm[changed[i]][j] << endl;
return {};
}
}
//cout <<"0 size:"<<m[changed[i]].size()<<endl;
if(m[changed[i]].size()!=0){
//rm[changed[i]].push_back(i);
if(m[changed[i]].size()%2==0)
res.push_back(changed[i]);
m[changed[i]].pop_back();
}
//return vector<int>();
}
else{
//cout<< "else return" <<changed[i]<< endl;
//cout<< "size: "<<m[changed[i]].size()<< endl;
dixiao++;
}
//if(m[changed[i]].size()!=0){
// m[changed[i]].pop_back();
//}
//print(changed, m);
//cout<<"after dixiao="<<dixiao<<endl;
}
//cout <<"dixiao:"<<dixiao<<endl;
if(dixiao>0){
return {};
}
//if(rm[0].size()%2==1)
//return {};
return res;
}
};
*/