分享|普通人崩溃的一天
800
2024.04.20
2024.04.20
发布于 未知归属地

代码冗余+最后超时=写不出的一天

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;

}

};

*/

评论 (7)