Re: [閒聊] 每日leetcode已回收

看板Marginalman作者 (是oin的說)時間1年前 (2024/07/27 18:01), 編輯推噓1(215)
留言8則, 5人參與, 1年前最新討論串575/1548 (看更多)
※ 引述 《enmeitiryous (enmeitiryous)》 之銘言: :   : 2976. minium cost to convert string 1 : 題目:給你兩個string source, target,目標是要將source convert to target : 並給你兩個array: original, changed其中original[i],changed[i]配對代表你 : 可以將char: original[i]變換成changed[i]並花費另一個array: cost[i]的花費 : ,回傳將source轉換成target所需的最小花費,如果無法轉換則回傳-1。 :   : 思路: 原本想說是不是用dp寫的 可是想了想 dp的話 必須搭配dfs或是其他東西 才能在那些裡找到對的變化方式 所以想了想 發現字母只有26個 所以建圖然後直接套著用比較快 建圖的方式 是對每個字做Dijkstra's 然後姆咪姆咪就好ㄌ 幹你娘: 我剛剛解完 覺得我無敵了 跟鬼一樣 就去看這題的第二題 就是hard難度的 這題好像就要用dp加上圖了 看了看 不會 果斷放棄 吃晚餐嘍 class Solution { public: long long minimumCost(string source, string target, vector<char>& original, vector<char>& changed, vector<int>& cost) { int len = original.size(); unordered_map<char, vector<pair<char,int>> > save; vector<vector<int>> paper(26,vector<int>(26,INT_MAX)); for(int i = 0 ; i < len ; i ++) { save[original[i]].push_back({changed[i],cost[i]}); } queue<char> find; for(int i = 0 ; i < 26 ; i ++) { paper[i][i] = 0; find.push(i+'a'); while(!find.empty()) { char nowfind = find.front(); for(auto k : save[nowfind]) { int jiwp = paper[i][nowfind-'a'] + k.second; if(jiwp < paper[i][k.first-'a']) { paper[i][k.first-'a'] = jiwp; find.push(k.first); } } find.pop(); } } long long res = 0; int slen = source.size(); for(int i = 0 ; i < slen ; i ++) { if(paper[source[i]-'a'][target[i]-'a'] == INT_MAX)return -1; res += paper[source[i]-'a'][target[i]-'a']; } return res; } }; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.12.21.240 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1722074505.A.AE0.html

07/27 18:04, 1年前 , 1F
我好崇拜你
07/27 18:04, 1F

07/27 18:08, 1年前 , 2F
Dij不是要priorityqueue嗎,另外這題直接寫個floyd不
07/27 18:08, 2F

07/27 18:08, 1年前 , 3F
是就好了
07/27 18:08, 3F

07/27 18:22, 1年前 , 4F
忘記用priority 了
07/27 18:22, 4F

07/27 18:23, 1年前 , 5F
你有什麼用
07/27 18:23, 5F

07/27 18:25, 1年前 , 6F
如果用priority queue 然後加個判斷 好像可以快一點
07/27 18:25, 6F

07/27 18:26, 1年前 , 7F
用Floyd 跟Dijkstra 不知道哪個比較快
07/27 18:26, 7F

07/27 18:37, 1年前 , 8F
大師
07/27 18:37, 8F
文章代碼(AID): #1cfCM9hW (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1cfCM9hW (Marginalman)