bfs
sjphiChina
代码是最为耐心、最能忍耐和最令人愉快的伙伴,在任何艰难困苦的时刻,它都不会抛弃你。
展开
-
Word Ladder II
leetcode中最难的一道,常做常新 public class Solution { public List> findLadders(String beginWord, String endWord, Set wordList) { List> res = new LinkedList<>(); Set visited = new HashSet<>(原创 2016-06-25 18:36:08 · 560 阅读 · 0 评论 -
Course Schedule
从这道题给自己很多启示: 1. 以后对于corner case,可以扔异常,这也是昨天的经验; 2. 数组courses是记录每节课的度数,对于度数为0的则是最基础的课程,直接加入queue; 3. 接着就是纯粹的图的拓扑排序。 public class Solution { public boolean canFinish(int n, int[][] edges) { if原创 2016-06-29 08:18:44 · 271 阅读 · 0 评论 -
Course Schedule II
做了I,这个II就是在每次找出度数为0的课程时,将其加入数组中,并返回数组,整体程序没有变化。 但当中两个注意: 1. 课程数组为0时,即没有前置课程,那么直接打印返回0-n-1; 2. 若遇到环,无法完成课程的情况,返回的是new int[0],而不是new int[numCourses] public class Solution { public int[] findOrde原创 2016-06-29 08:23:53 · 269 阅读 · 0 评论 -
Alien Dictionary
很好的参考:点击打开链接 此题关键是想到通过建图,再拓扑排序来解。思路一定要活。 每个不同的字母对就可以代表一条边。 public class Solution { public String alienOrder(String[] words) { StringBuilder order = new StringBuilder(); if (word原创 2016-06-30 03:55:52 · 497 阅读 · 0 评论 -
Surrounded Regions
这是的Number of Islands的先导题。以外围四条边为起始,找到当中的0,并从这个0开始找到与其联通的0,将这些0都置为特殊值,这些0都是不被x包围的。而于是剩下的0,则是被x包围。 这中思维很重要。 public class Solution { public void solve(char[][] board) { if (board == null原创 2016-06-21 16:57:17 · 196 阅读 · 0 评论