力扣打开转盘锁
打開轉(zhuǎn)盤鎖
評(píng)論區(qū)大神代碼:
我仿寫了一遍,有個(gè)地方如果按我寫的會(huì)超時(shí),但是絕對(duì)是正確的,拿出來求網(wǎng)友解答,或者自己日后找到答案了就來解答:
class Solution {public int openLock(String[] deadends, String target) {Set<String> set = new HashSet<String>(Arrays.asList(deadends));String startStr = "0000";if(target.equals(startStr)){return 0;}if(set.contains(startStr)){return -1;}Queue<String> queue = new LinkedList<>();Set<String> visited = new HashSet<>();queue.offer(startStr);visited.add(startStr);int level = 0;while(!queue.isEmpty()){int size = queue.size();while(size-->0){String str = queue.poll();if(str.equals(target)){return level;} for(int i = 0;i<4;i++){char ch = str.charAt(i);String strAdd = str.substring(0,i)+(ch=='9'?0:ch-'0'+1)+str.substring(i+1);String strSub = str.substring(0,i)+(ch=='0'?9:ch-'0'-1)+str.substring(i+1);if(!visited.contains(strAdd)&&!set.contains(strAdd)){visited.add(strAdd);queue.offer(strAdd);}if(!visited.contains(strSub)&&!set.contains(strSub)){visited.add(strSub);queue.offer(strSub);}}}level++;}return -1;} }其中
String strAdd = str.substring(0,i)+(ch=='9'?0:ch-'0'+1)+str.substring(i+1); String strSub = str.substring(0,i)+(ch=='0'?9:ch-'0'-1)+str.substring(i+1);若寫成我的想法就會(huì)超時(shí):
String strAdd = str.substring(0,i)+(ch=='9'?'0':ch+1)+str.substring(i+1); String strSub = str.substring(0,i)+(ch=='0'?'9':ch-1)+str.substring(i+1);哪里效率變低了呢?
總結(jié)
- 上一篇: 铝材一吨多少钱啊?
- 下一篇: 825. 适龄的朋友