摘要: 此题要多品品。由于是求最短的路径,所以用BFS,DFS会在大数据的时候超时,原因也容易理解。最终解法参考了:http://discuss.leetcode.com/questions/1108/word-ladder和http://blog.sina.com.cn/s/blog_b9285de201... 阅读全文
posted @ 2013-08-31 21:43 阿牧遥 阅读(429) 评论(0) 推荐(0)
摘要: 相对简单,就是从两边往中间推进,忽略其他字符。 public class Solution { public boolean isPalindrome(String s) { if (s.length() == 0) return true; int i = 0; int j = s.length( 阅读全文
posted @ 2013-08-31 15:22 阿牧遥 阅读(166) 评论(0) 推荐(0)
摘要: 一开始马上想起来寻找第k小的数,是采用快排的partition方法。但因为题目要把k之前的数排序输出,这个方法就不是很合适,因为(随机化后:http://blog.csdn.net/liangbopirates/article/details/9377105)它最差能在O(n)找到第k小的数,那么就要最差k*O(n)。如果对前面部分排序那就是O(k*logk) + O(n)了。都不合适,看来最合适的还是使用堆,能做到O(n*logK)。但partition方法和堆方法比较,有个好处就是inplace,不占多余内存,在海量数据处理的时候有这个好处。下面这段代码是寻找第k小的数,其精华部分是par 阅读全文
posted @ 2013-08-31 14:54 阿牧遥 阅读(296) 评论(0) 推荐(0)
摘要: 这道题就是典型的约瑟夫环问题。http://blog.csdn.net/wuzhekai1985/article/details/6628491一开始想了一下用数组来做,就是模拟方法,同时记录一下是不是一个节点已经删除。然后看了一下,也很自然的可以用链表来做。但这样的复杂度都是O(m*n)。如果不用模拟出其中的所有步骤,那么可以用数学方法来解,就是一个递推公式。f(n) = (f(n-1) + m) % n; f(1) = 1。推导过程参加链接。但精华部分是,当n个数字删掉一个数后,就成为了n-1个数,假设知道n-1个数的剩下的编号x,就可以映射回原来n个数里面。“胜利者的编号为 (x + k 阅读全文
posted @ 2013-08-31 00:44 阿牧遥 阅读(250) 评论(0) 推荐(0)