当前位置: 首页 > news >正文

leetcode 752. Open the Lock 打开转盘锁

Problem: 752. Open the Lock 打开转盘锁

解题过程

队列,两种可能的,某个字符+1取模或者-1+10取模,共4个字符,所以共4*2种可能,而且0000到9999共10000种可能,所以集合不大的,可以用广度优先搜索,然后判断是否已经遍历过,若是没有则放入队列,队列每次pop一个就将这个字符串放入已经遍历过的集合中,防止重复的

Code

class Solution { public: int openLock(vector<string>& deadends, string target) { if(target=="0000") return 0; queue<pair<string, int>> qe; qe.push({"0000", 0}); unordered_set<string> dead; for(string& s : deadends) { dead.insert(s); } if(dead.find("0000")!=dead.end()) return -1; pair<string, int> pr; string str, tmp; char a,b,c,d; int a1, b1,c1,d1, len; while(!qe.empty()) { int sz = qe.size(); for(int i = 0; i < sz; i++) { pr = qe.front(); str = pr.first; len = pr.second; qe.pop(); dead.insert(str); a1 = str[0]-'0'; b1 = str[1]-'0'; c1 = str[2]-'0'; d1 = str[3]-'0'; a = (a1+1)%10 + '0'; tmp.clear(); tmp += a; tmp += str[1]; tmp += str[2]; tmp += str[3]; if(dead.find(tmp)==dead.end()) { if(tmp==target) return len + 1; dead.insert(tmp); qe.push({tmp, len + 1}); } a = (a1-1+10)%10 + '0'; tmp.clear(); tmp += a; tmp += str[1]; tmp += str[2]; tmp += str[3]; if(dead.find(tmp)==dead.end()) { if(tmp==target) return len + 1; dead.insert(tmp); qe.push({tmp, len + 1}); } b = (b1+1)%10 + '0'; tmp.clear(); tmp += str[0]; tmp += b; tmp += str[2]; tmp += str[3]; if(dead.find(tmp)==dead.end()) { if(tmp==target) return len + 1; dead.insert(tmp); qe.push({tmp, len + 1}); } b = (b1-1+10)%10 + '0'; tmp.clear(); tmp += str[0]; tmp += b; tmp += str[2]; tmp += str[3]; if(dead.find(tmp)==dead.end()) { if(tmp==target) return len + 1; dead.insert(tmp); qe.push({tmp, len + 1}); } c = (c1+1)%10 + '0'; tmp.clear(); tmp += str[0]; tmp += str[1]; tmp += c; tmp += str[3]; if(dead.find(tmp)==dead.end()) { if(tmp==target) return len + 1; dead.insert(tmp); qe.push({tmp, len + 1}); } c = (c1-1+10)%10 + '0'; tmp.clear(); tmp += str[0]; tmp += str[1]; tmp += c; tmp += str[3]; if(dead.find(tmp)==dead.end()) { if(tmp==target) return len + 1; dead.insert(tmp); qe.push({tmp, len + 1}); } d = (d1+1)%10 + '0'; tmp.clear(); tmp += str[0]; tmp += str[1]; tmp += str[2]; tmp += d; if(dead.find(tmp)==dead.end()) { if(tmp==target) return len + 1; dead.insert(tmp); qe.push({tmp, len + 1}); } d = (d1-1+10)%10 + '0'; tmp.clear(); tmp += str[0]; tmp += str[1]; tmp += str[2]; tmp += d; if(dead.find(tmp)==dead.end()) { if(tmp==target) return len + 1; dead.insert(tmp); qe.push({tmp, len + 1}); } } } return -1; } };
http://www.jsqmd.com/news/88598/

相关文章:

  • 贪吃蛇图片
  • 2025年女孩取名机构推荐:权威榜单TOP5机构深度解析 - 十大品牌推荐
  • 告别代码与手册!虎贲等考 AI 让 SPSS+ChatGPT 合体,“对话式分析” 颠覆学术研究
  • AI如何帮你快速解决Python模块调用错误
  • HR实战进阶:人力资源管理五本必看好书推荐
  • 十本最值得读的企业战略书籍推荐,商业精英必看
  • 问卷还在手动搭?5 款 AI 问卷工具实测:有的只敢出题,有的能一键生成 “可写进论文” 的完整调研方案!
  • 企业级Git工作流:git push的最佳实践
  • 2025年女孩取名机构推荐:权威评测榜单TOP5深度解析 - 十大品牌推荐
  • 2025年八字起名公司推荐:2025年权威起名机构榜单深度解析 - 品牌推荐
  • 中国免费API都在这里:一键调用,零成本入门
  • 这个共直流式风光储并网系统有点意思,咱们直接扒开仿真模型看看门道。四个核心模块就像四个性格迥异的兄弟,各自带着看家本事凑成了这个发电系统
  • 一体化系统(九)高级表格自己编程如何选择——东方仙盟练气期
  • 毕设开源 基于深度学习二维码检测识别系统
  • 告别手工打磨!问卷设计 “老匠人” 遇对手,虎贲等考 AI 以 “智能巧匠” 之姿刷新科研新体验
  • 2025年起名改名公司推荐:2025年起名改名机构权威榜单解析 - 品牌推荐
  • 幽冥大陆(四十九)PHP打造Java的Jar实践——东方仙盟筑基期
  • 学术降重 “独行侠” VS “智能神器”!虎贲等考 AI AIGC:开启论文原创新征程
  • 市场营销书单:营销人必看的10本书
  • 2025年起名改名公司推荐:业内权威机构综合评测与排行解析 - 品牌推荐
  • Boost变换器Simulink仿真分析 —— 从开环到双闭环控制
  • 2025年起名机构推荐:2025年起名机构权威榜单TOP5深度解析 - 十大品牌推荐
  • 2025年八字起名公司推荐:权威起名机构排行深度解析 - 品牌推荐
  • 【数学】【微积分】 ① 导数的基础概念与计算法则
  • 新型内置式永磁同步电机设计 随着能源问题的日益突出,环境污染越来越严重,全社会都在提倡绿色环保...
  • 2025年取名机构推荐:权威取名机构榜单TOP5深度解析 - 十大品牌推荐
  • 2025年取名机构推荐:五大专业命名服务商综合排名解析 - 十大品牌推荐
  • 传感器模电学习
  • 直播工具OBS Studio
  • 招生宣传管理系统(11477)