Re: [闲聊] 每日leetcode

楼主: enmeitiryous (enmeitiryous)   2024-08-03 10:10:06
1460 make two arrays equal by reversinng subarray
题目:
给你两个包含integer的vector: arr和target,回传如果我们能够无限次reverse
arr中的subarray,我们是否能将arr转变成target,可以则回传true,否则回传false
思路:
因为最没效率的方法我们能透过一次次翻转arr中的长度为2的subarray来把任一元素
放置到正确位子,所以只要arr中元素的组成和数量都和target的相同则必定可以转换
所以针对两个vector纪录各自元素出现次数比较有不同则回传false即可
bool canBeEqual(vector<int>& target, vector<int>& arr) {
int n=arr.size();
unordered_map<int,int> fo_nums;
unordered_map<int,int> fo_tar;
for(int i=0;i<n;++i){
fo_nums[arr[i]]++;
fo_tar[target[i]]++;
}
for(auto k:fo_tar){
if(fo_nums[k.first]!=k.second){
return false;
}
}
return true;
}
作者: sustainer123 (caster)   2024-08-03 10:20:00
大师
作者: dont   2024-08-03 11:16:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com