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

一个网站如何做外链鞍山做网站企业

一个网站如何做外链,鞍山做网站企业,发布php做的网站,搜狗推广下架Problem: 752. 打开转盘锁 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.用一个集合 deads 存储所有的“死锁”状态,一个集合 visited 存储所有已经访问过的状态,以避免重复访问,一个队列 q 进行广度优先搜索(BF…

Problem: 752. 打开转盘锁

文章目录

  • 题目描述
  • 思路及解法
  • 复杂度
  • Code

题目描述

在这里插入图片描述在这里插入图片描述

思路及解法

1.用一个集合 deads 存储所有的“死锁”状态,一个集合 visited 存储所有已经访问过的状态,以避免重复访问,一个队列 q 进行广度优先搜索(BFS);并将 deadends 数组中的每个元素加入 deads 集合。
2.将初始状态 “0000” 加入队列 q 并标记为已访问。

3.进行广度优先搜索(BFS):

3.1.获取当前队列的大小 sz,表示当前层级中的节点数。
3.2.遍历当前层级中的每个节点:

3.2.1.从队列中取出一个节点 cur。如果 cur 在 deads 中,则跳过该节点。如果 cur 等于目标状态 target,则返回当前步数 step。
3.2.2.生成当前状态 cur 的所有相邻状态(每一位向上拨或向下拨):对于每个相邻状态 up 和 down,如果尚未访问过,则加入队列并标记为已访问,最后使得步数step++

复杂度

时间复杂度:

O ( N × M ) O(N \times M) O(N×M);其中 N N N为状态空间0000 - 9999, M M M为每个状态的子节点树(即为8.具体到本题中可以认为时间复杂度为常量级别,同理空间复杂度也为常量级别)

空间复杂度:

O ( N ) O(N) O(N)

Code

class Solution {/*** Open the Lock** @param deadends Given string* @param target   Given string* @return int*/public int openLock(String[] deadends, String target) {// Record the death password to be skippedSet<String> deads = new HashSet<>();for (String s : deadends) {deads.add(s);}// Record passwords that have been exhausted to prevent backtrackingSet<String> visited = new HashSet<>();Queue<String> q = new LinkedList<>();// Start breadth-first search from the starting pointint step = 0;q.offer("0000");visited.add("0000");while (!q.isEmpty()) {int sz = q.size();// Spreads all nodes in the current queue aroundfor (int i = 0; i < sz; ++i) {String cur = q.poll();// Determine whether the destination is reachedif (deads.contains(cur)) {continue;}if (cur.equals(target)) {return step;}// Adds the untraversed adjacents of a node to the queuefor (int j = 0; j < 4; ++j) {String up = plusOne(cur, j);if (!visited.contains(up)) {q.offer(up);visited.add(up);}String down = minusOne(cur, j);if (!visited.contains(down)) {q.offer(down);visited.add(down);}}}step++;}return -1;}/*** Flip s[j] up once** @param s Given string* @param j Current number value* @return String*/private String plusOne(String s, int j) {char[] ch = s.toCharArray();if (ch[j] == '9') {ch[j] = '0';} else {ch[j] += 1;}return new String(ch);}/*** Move s[i] down once** @param s Given string* @param j Current number value* @return String*/private String minusOne(String s, int j) {char[] ch = s.toCharArray();if (ch[j] == '0') {ch[j] = '9';} else {ch[j] -= 1;}return new String(ch);}
}
http://www.yayakq.cn/news/643903/

相关文章:

  • 网站建设与依法行政花艺企业网站建设项目规划
  • 腾讯云服务器可以做传奇网站吗全球ic采购网
  • 网站建设制作后报告wordpress禁止访问txt
  • 网站网站开发的公司电话seo技术培训课程
  • 免费网站模板无需注册wordpress 图文插件
  • 网站开发后端是什么flash如何制作网页
  • 江西南昌网站建设哪家好佛山新网站制作
  • 敦煌网的网站推广方式php网站的html文件放在那个里面的
  • 食品建设网站wordpress无法用qq邮箱验证
  • 新手建设什么网站好江西最新新闻事件
  • 网站开发创意想法最热门的网页游戏排行
  • wordpress建企业展示昆明网站seo诊断
  • 高校二级网站建设方案做短视频素材哪里找
  • 电脑上如何做课程视频网站手机无货源网店怎么开
  • 网站怎么弄缩略图上传古镇小企业网站建设
  • 手机评测哪个网站做的好点wordpress手机播放
  • 云南网站建设公司排名做网站建设涉及哪些算法
  • 南昌网站建设方案详细版常州做上市公司律所
  • 网站制作方案怎么做网页设计师必须知道的网站
  • 网站设计外文文献广州网站营销推广
  • 重庆做木门网站公司北京市门户网站
  • 国外怎么做推广网站可以看小视频的浏览器
  • 网站建设案例怎么样理县网站建设公司
  • 重庆网站建设莉北京网站设计公司sx成都柚米科技15
  • 妇幼网站建设pptghost 卸载wordpress
  • 网站开发组岗位电子商务网站建设的代码
  • 思茅北京网站建设wordpress输出文章标签名
  • 网站建设业务提成网页软件下载
  • 东莞服务公司网站建设关于做电商网站导流项目
  • 深圳网站程序开发制作网站关键词优化的价格