752. Open the Lock Medium
1/**
2 * [752] Open the Lock
3 *
4 * 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.
5 * The lock initially starts at '0000', a string representing the state of the 4 wheels.
6 * You are given a list of deadends dead ends, 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.
7 * 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.
8 *
9 * Example 1:
10 *
11 * Input: deadends = ["0201","0101","0102","1212","2002"], target = "0202"
12 * Output: 6
13 * Explanation:
14 * A sequence of valid moves would be "0000" -> "1000" -> "1100" -> "1200" -> "1201" -> "1202" -> "0202".
15 * Note that a sequence like "0000" -> "0001" -> "0002" -> "0102" -> "0202" would be invalid,
16 * because the wheels of the lock become stuck after the display becomes the dead end "0102".
17 *
18 * Example 2:
19 *
20 * Input: deadends = ["8888"], target = "0009"
21 * Output: 1
22 * Explanation: We can turn the last wheel in reverse to move from "0000" -> "0009".
23 *
24 * Example 3:
25 *
26 * Input: deadends = ["8887","8889","8878","8898","8788","8988","7888","9888"], target = "8888"
27 * Output: -1
28 * Explanation: We cannot reach the target without getting stuck.
29 *
30 *
31 * Constraints:
32 *
33 * 1 <= deadends.length <= 500
34 * deadends[i].length == 4
35 * target.length == 4
36 * target will not be in the list deadends.
37 * target and deadends[i] consist of digits only.
38 *
39 */
40pub struct Solution {}
41
42// problem: https://leetcode.com/problems/open-the-lock/
43// discuss: https://leetcode.com/problems/open-the-lock/discuss/?currentPage=1&orderBy=most_votes&query=
44
45// submission codes start here
46
47impl Solution {
48 pub fn open_lock(deadends: Vec<String>, target: String) -> i32 {
49 0
50 }
51}
52
53// submission codes end
54
55#[cfg(test)]
56mod tests {
57 use super::*;
58
59 #[test]
60 fn test_752() {
61 }
62}
63
Back
© 2025 bowen.ge All Rights Reserved.