作者enmeitiryous (enmeitiryous)
看板Marginalman
標題Re: [閒聊] 每日leetcode
時間Sat Aug 3 10:10:06 2024
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;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.238.8 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1722651008.A.16E.html
推 sustainer123: 大師 08/03 10:20
推 dont: 大師 08/03 11:16