File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution
2+ {
3+ public:
4+ int openLock(vector<string>& deadends, string target)
5+ {
6+ int operations = 0;
7+ unordered_set<string> dead, vis;
8+
9+ for(auto &deadend : deadends) dead.insert(deadend);
10+ if(dead.count("0000")) return -1;
11+
12+ queue<string> q;
13+ q.push("0000");
14+ vis.insert("0000");
15+
16+ while(q.size())
17+ {
18+ int sz = q.size();
19+ while(sz--)
20+ {
21+ string cur_state = q.front();q.pop();
22+ if(cur_state == target) return operations;
23+ for(int i = 0; i < 4; i++)
24+ {
25+ string new_state = cur_state;
26+ new_state[i] == '9' ? new_state[i] = '0' : new_state[i]++;
27+ if(!vis.count(new_state) and !dead.count(new_state))
28+ q.push(new_state), vis.insert(new_state);
29+
30+ new_state = cur_state;
31+ new_state[i] == '0' ? new_state[i] = '9' : new_state[i]--;
32+ if(!vis.count(new_state) and !dead.count(new_state))
33+ q.push(new_state), vis.insert(new_state);
34+ }
35+ }
36+ operations++;
37+ }
38+ return -1;
39+ }
40+ };
You can’t perform that action at this time.
0 commit comments