1. Word Ladder
    思路一:单向bfs, 使用visited数组记录哪些已经访问过了, 访问过的就不允许再次入队, 同时这里想到的是使用26个英文字母,枚举可能的取值, 类似brute force
    思路二:双向bfs,使用两个set,这里没有使用queue,是因为需要在queue里查询,不方便.
    另外,需要注意的一点是,每次遍历时,都是取size较小的来做搜索,初始时,各插入头和尾,之后每次取最小的set来拓展, 这样就实现了交替访问两个set,
    是两者的高度在 l/2, 这样可以缩短一般的时间

  2. 单词接龙 II
    思路一:因为要存储最终的结果,所以图是一定要建立的,通常我们可以通过维护每个节点的子节点,即一个map,每个map里是一个数组
    我们可以称之为children数组活着parent数组
    2)每遍历一层节点后,从wordlist中删除掉这些节点,因为本题是有源节点的,从源节点看,前一层的节点不应该再次呗遍历,因为长度变长了
    3)对于重复的问题,可以使用hastset来解决
    4)最后通过dfs,遍历输出结果

思路二:双向bfs + dfs
解法跟思路一类似,只是需要创建两个set,然后需要不断交换两个set

  1. Race Car
    思路一:bfs解法有一个重要的技巧,即利用一个set,记录已经出现过的路径,这样bfs枚举到重复路径时,可以直接跳过,这是一个有效的prunning method.

最新文章

  1. 第7章 权限管理(1)_ACL权限
  2. JavaWeb学习笔记——表达式语言
  3. [原]SyntaxHighlighter使用笔记
  4. Java——String.split()函数
  5. bzoj2257
  6. bootstrap学习笔记--bootstrap网格系统
  7. POJ3274 hash
  8. poj3708:函数式化简+高精度进制转换+同余方程组
  9. VBS脚本合集(自制脚本)
  10. TP5.0实现无限极回复功能
  11. [实例]JAVA生成字母+随机数字并生成文件
  12. 华盛顿邮报:FBI 屡次夸大了“手机加密威胁”的数字
  13. Hper-V卸载
  14. connect socket的超时设置
  15. 某公司的U3D笔试题
  16. ORA-12541:TNS:无监听程序 解决办法
  17. js的小知识7
  18. 自己总结的C#编码规范--前言&目录
  19. 简单记录下3PC
  20. Codeforces Round #503 Div1+Div2 1019&1020

热门文章

  1. 解压RPM包
  2. (转)如何获得当前ListVIew包括下拉的所有数据?
  3. CRITICAL:yum.cli:Config Error: Error accessing file for config file:///etc/yum.conf
  4. GOF23设计模式之中介者模式(mediator)
  5. cordova 安装使用
  6. Java中的强制类型转换
  7. 为什么Java程序占用的内存比实际分配给它的要多
  8. oracle 中GROUP BY的用法
  9. socket通信循环
  10. Python web框架 Tornado(一)基础学习