看板 Marginalman
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