You have a lock in front of you with 4 circular wheels. Each wheel has 10 slots: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'. The wheels can rotate freely and wrap around: for example we can turn '9' to be '0', or '0' to be '9'. Each move consists of turning one wheel one slot.
The lock initially starts at '0000', a string representing the state of the 4 wheels.
You are given a list of deadends, meaning if the lock displays any of these codes, the wheels of the lock will stop turning and you will be unable to open it.
Given a target representing the value of the wheels that will unlock the lock, return the minimum total number of turns required to open the lock, or -1 if it is impossible.
This is a state-space BFS problem. Each lock state is a node, and each single-wheel rotation is an edge. BFS finds the minimum number of moves.
deadends = ["0201","0101","0102","1212","2002"], target = "0202"6deadends = ["8888"], target = "0009"1deadends = ["8887","8889","8878","8898","8788","8988","7888","9888"], target = "8888"-11 <= deadends.length <= 500deadends[i].length == 4target.length == 4target will not be in the list deadendstarget and deadends[i] consist of digits onlyClick "Run" to execute your code against test cases
Socratic guidance - I'll ask questions, not give answers