2766. 重新放置石块
思路:使用哈希表map来记录石块位置的变化。需要注意当起始和目的位置相同的时候,直接跳过继续即可。
class Solution {
public:
vector<int> relocateMarbles(vector<int>& nums, vector<int>& moveFrom, vector<int>& moveTo) {
map<int,int> mp;
for(auto x:nums){
mp[x]++;
}
for(int i=0;i<moveFrom.size();i++){
if(mp.count(moveFrom[i])){
if(moveFrom[i]!=moveTo[i]){
mp[moveTo[i]]+=mp[moveFrom[i]];
mp[moveFrom[i]]=0;
}
}
}
vector<int> v;
for(auto tmp:mp){
if(tmp.second!=0){
v.push_back(tmp.first);
}
}
return v;
}
};