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

建站技术布局方式网页制作心得2000字

建站技术布局方式,网页制作心得2000字,免费开网店的app,品牌网站定制题目链接&#xff1a;https://leetcode.cn/problems/zlDJc7/ 题目大意&#xff1a;给出一个四位数字的密码锁&#xff0c;初始状态是0000&#xff0c;目标是targer。每一次转动只能让一个位的轮盘转动一下&#xff08;0往后转是9&#xff09;。有一个vector<string> dea…

题目链接:https://leetcode.cn/problems/zlDJc7/

题目大意:给出一个四位数字的密码锁,初始状态是0000,目标是targer。每一次转动只能让一个位的轮盘转动一下(0往后转是9)。有一个vector<string> deadends,里面有很多四位的数字,如果转到其中的数字,就会死锁。我们在达到目标的过程中不能死锁。返回到达目标的最小步数,如果无法达到目标,返回-1

思路:BFS,每一步,每个数字有8个可能的变化。如果未访问且不属于死锁就加入队列。但这题还有挺多小细节的,做的时候debug了挺久…

首先,因为要得到步数,因此需要记录BFS的层数。所以BFS的while循环内还得加一层,qs记录当前队列长度,然后遍历完前qs个元素才给步数+1。

其次,【是否访问过某个数字】,实际上在其未加入队列,而在其作为邻居被访问时就可以标记了。在代码中表现为accdec就可以加入known中。当其作为q.front()再标记时,实际上可能是第二次或更多次的访问了,此时可能出现【同一数字被塞入队列多次】的情况。

比如q[1]的邻居是1234,未访问且不死锁,加入队列。而q[2]的邻居也是1234,未访问且不死锁,又加入队列。这样就塞了多次。因此,一个数字作为邻居被访问到时,就将其标记为访问过。

还有两个edge cases。

  • 如果0000属于死锁,那么直接返回-1
  • 如果target就是0000,就直接返回0

第二处是因为我们对一个数字的操作都在其【作为邻居被访问时】进行,而在队列中作为队首访问时,不再判断是否与target相等了。

                    string acc = getAcc(q.front(), idx);if (!known.count(acc) && !de.count(acc)) {known.insert(acc);if (acc == target)return step+1;elseq.push(acc);}

完整代码

class Solution {
public:string getAcc(string str, int idx) {string ret = str;if (ret[idx] == '9')ret[idx] = '0';elseret[idx]++;return ret;}string getDec(string str, int idx) {string ret = str;if (ret[idx] == '0')ret[idx] = '9';elseret[idx]--;return ret;}int openLock(vector<string>& deadends, string target) {set<string> de;set<string> known;string init("0000");for (int i = 0; i < deadends.size(); i++)de.insert(deadends[i]);queue<string> q;q.push(init);known.insert(init);if (de.count(init))return -1;if (target == init)return 0;int step = 0;while (!q.empty()) {int qs = q.size();for (int j = 0; j < qs; j++) {for (int idx = 0; idx < 4; idx++) {string acc = getAcc(q.front(), idx);if (!known.count(acc) && !de.count(acc)) {known.insert(acc);if (acc == target)return step+1;elseq.push(acc);}string dec = getDec(q.front(), idx);if (!known.count(dec) && !de.count(dec)) {known.insert(dec);if (dec == target)return step+1;elseq.push(dec);}}q.pop();}step++;}return -1;}
};
http://www.yayakq.cn/news/870920/

相关文章:

  • 有了网址可以建网站吗福贸外贸论坛
  • 做微商网站的软文网站内容注意事项
  • 龙岩网站建设找哪家软件外包服务内容
  • 推介做resume的网站广西建设网行业版首页
  • 宿州市做网站建设的公司seo推广排名公司
  • 商务网站规划与建设seo常用工具包括
  • 娱乐类网站专业微信网站建设报价
  • 黄村网站开发公司上海外贸网站建
  • wap网站生成小程序交互做的很好的网站
  • 网站建设电wordpress 新变量
  • 微信分享网站短链接怎么做的html代码雨
  • 淘客网站开发教程手机怎么制作软件教程
  • seo快速排名站外流量推广国外素材网站推荐
  • 网站建设总体流程网站开发和设计实训
  • 如何免费建立自己的网站你是网站设计有限公司的项目经理
  • 做网站需要多长时间wordpress源码整合
  • 本地服务类网站成本比较开放的浏览器
  • 专做服装的网站html网站制作模板
  • 自己做的网站显示iis7设计公司网页制作
  • 贵阳门户网站柯桥网站建设哪家好_绍兴市场推广_非凡分类信息
  • 万全网站建设网站备案期间做什么
  • 焦作市建设工程网站网站备案要多少天
  • 小公司建设网站.me做社区网站
  • php做电商网站安全性如何wordpress theme
  • 谁家网站用户体验做的好网站开发定制合同范本
  • 网站开发中怎么设置快捷键做网站要不要35类商标
  • 一个单位网站被黑该怎么做wordpress数据库中文
  • 品牌网站建设找哪家worldpress做网站
  • 罗湖做网站的angularjs 网站开发
  • 淘客网站推广免备案建设通电脑版