本文共 1310 字,大约阅读时间需要 4 分钟。
class Solution(object): def openLock(self,deadends,target): numbers = [("0000",0)] setnumbers = set() setnumbers.add("0000") # print(numbers[0][0][0]) while len(numbers)>0: numberFather = numbers.pop(0) if numberFather[0] in deadends: return -1 if numberFather[0] == target: return numberFather[1] for i in range(4): # print(numberFather[0][i]) numberT1 = (int(numberFather[0][i]) + 1)%10 numberT2 = (int(numberFather[0][i]) - 1)%10 num1 = numberFather[0][:i]+str(numberT1)+numberFather[0][i+1:] num2 = numberFather[0][:i] + str(numberT2) + numberFather[0][i + 1:] if (num1 not in deadends) and (num1 not in setnumbers): numbers.append((num1,numberFather[1]+1)) setnumbers.add(num1) if (num2 not in deadends) and (num2 not in setnumbers): numbers.append((num2,numberFather[1]+1)) setnumbers.add(num2) return -1"""["2110","2000","0000","2111","1110"]"0012""""if __name__ == '__main__': s = Solution() deadends = ["2110","2000","0000","2111","1110"] target = "0012" print(s.openLock(deadends,target))
转载地址:http://zqddi.baihongyu.com/