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

看板Marginalman作者 (是oin捏)時間1年前 (2024/04/22 13:36), 編輯推噓1(212)
留言5則, 4人參與, 1年前最新討論串148/1548 (看更多)
※ 引述 《sustainer123 (caster)》 之銘言: :   : ※ 引述《Rushia (早瀬ユウカの体操服 )》之銘言: : : https://leetcode.com/problems/open-the-lock/description : : 752. Open the Lock : : 給你一個四個位數的密碼鎖,每個密碼由一個0~9的輪型裝置表示,每次你可以把其中 : : 一位數往上轉或往下轉,該密碼鎖初始化為0000,如果轉成 deadends 裡面的密碼時密 : : 鎖會卡死,求出最少幾步可以讓我們把密碼轉成target,如果不可能就返回-1。 : : 思路: : : 1.找最短路徑最簡單就bfs,每次我們都把四個位數分別往下轉和往上轉,看看是否最 : : 可以走到target,因為是bfs所以第一個碰到的一定最短step。 : : 2.避免往回走用一個set紀錄走過的結果,deadends的值也可以丟進去。 : : 3.如果走不到返回-1。 思路: 一開始我先想 要怎樣才算是可以達成那個密碼 然後就畫了這個圖 首先考慮只有兩個數字的秘密 https://i.imgur.com/3ltkFVZ.jpeg
也就是說 可以達成密碼的話 一定要讓他可以走過去 這題就變成deadend是不能走的迷宮位子了 然後就變成四維迷宮了 接下來我就想說 阿我要知道他的步數 那我是不是要dp 然後我想了一下發現 幹你娘絕對會超時 要看10000次 大小是10000的地圖 每次都看走過的地方還可不可以走 然後dfs也會超時 因為會一直走到同樣的地方 所以只剩bfs能做了 然後 我做出來 https://i.imgur.com/S4fKd0i.png
媽的 這甚麼狗屎效率 謝謝 謝謝喔 class Solution { public: priority_queue<pair<int,string> , vector<pair<int,string>>, greater<pair<int ,string>>> save; vector<int> paper; vector<int> pass; void find(int step , string now ) { int nowi = stoi(now); if(step >= paper[nowi])return; if(pass[nowi])return; pass[nowi] = 1; paper[nowi] = step; for(int i = 0 ; i < 4 ; i ++) { if(now[i] == '0') { string k = now; k[i] = '9'; save.push({step+1 , k}); string j = now; j[i] = '1'; save.push({step+1 , j}); } else if (now[i] == '9') { string k = now; k[i] = '8'; save.push({step+1 , k}); string j = now; j[i] = '0'; save.push({step+1 , j}); } else { string k = now; k[i] --; save.push({step+1 , k}); string j = now; j[i] ++; save.push({step+1 , j}); } } } int openLock(vector<string>& deadends, string target) { paper.resize(10000,99999999); pass.resize(10000,0); for(int i = 0 ; i < deadends.size() ; i ++) { int p = stoi(deadends[i]); paper[p] = -1; pass[p] = 1; } save.push({0,"0000"}); while(!save.empty()) { auto k = save.top(); save.pop(); find(k.first , k.second); } if(paper[stoi(target)] == 99999999)return -1; return paper[stoi(target)]; } }; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.34.62 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1713764181.A.8EE.html

04/22 13:41, 1年前 , 1F
別捲了
04/22 13:41, 1F

04/22 13:42, 1年前 , 2F
寶 我寫的跟大便一樣 我捲捲不贏
04/22 13:42, 2F

04/22 13:44, 1年前 , 3F
你好爛,連捲都捲不了
04/22 13:44, 3F

04/22 13:46, 1年前 , 4F
不過我寫不出來,你是大師
04/22 13:46, 4F

04/22 14:02, 1年前 , 5F
大師
04/22 14:02, 5F
文章代碼(AID): #1c9VTLZk (Marginalman)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 148 之 1548 篇):
文章代碼(AID): #1c9VTLZk (Marginalman)