摘要: 这一题是在上一题Word Break的基础上求总共有多少种分割方法,一定程度上可以被抽象成组合问题,而往往组合问题采用递归算法可以实现,所以想到递归也就是很自然的事。下面是AC代码。 1 /** 2 * Given a string s and a dictionary of wo... 阅读全文
posted @ 2014-04-25 00:59 echoht 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 这道题很有趣,采用动态规划,开始的时候,DP在我的脑海中闪过,但是没有认真去思考,后来看了前辈说采用Dp,才决定自己认真试下。设这样一个标记数组boolean Db[0...len],Db[i]表示String[0...i]是否可segment的。当我考虑第i个字符时,应该这样想,以i为结尾的最后一... 阅读全文
posted @ 2014-04-24 23:27 echoht 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 链表有环无环的判断以及环的第一个节点的检测问题。编程之美上面也有。思路极为简单:1. 是否有环,通过快、慢两个指针从头一直走,快的每次走两步,慢的每次走一步,如果快的最后有遇到null,说明没有环;如果快的最后和慢的同时走到某个节点,则说明有环。2. 环的第一个节点,用两个指针,一个从链表的头部开始... 阅读全文
posted @ 2014-04-24 18:43 echoht 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 这道题参考了Discuss 中一个前辈的思路:把输入的链表分成前后两半,将后半链表reverse,最后merge成目标链表。 1 /** 2 * reorder the list in-place without altering the nodes' value 3 * 参考了... 阅读全文
posted @ 2014-04-24 18:36 echoht 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 二叉树的三种遍历,我之前写过这个的迭代实现,详见 这里。下面是Leetcode这道题的AC代码,同样采用迭代方法,但是我用了一个ArrayList去记录已经出栈的节点,这样当我考察栈顶节点是否直接弹出时,只要看它是否有左右子节点或者是它的左右子节点是否已经被弹出。这种方法可能在时间复杂度上更高。 1... 阅读全文
posted @ 2014-04-24 18:32 echoht 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 这题AC的前提是get()和set()操作都得是O(1),不过题中没有说明这点(所以我一开始Naive的用了两个数组分别表示Key 和Value,想都不用想每个操作定然会达到N)。后来是看了discuss后,决定采用HashMap+LinkedList,但是结果还是一直TLE,其实TLE是预料中的,... 阅读全文
posted @ 2014-04-22 23:25 echoht 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 这道题较简单,这里不多说,下面是AC的代码: 1 /** 2 * 插入排序的算法比较简单,我看wiki上,当要在已排序列表中插入一个元素时,是从后到前遍历, 3 * 由于链表只能从前往后遍历,所以我采用从后到前。 4 * 要注意的地方就是找到位置时,处理链表的元素插入的... 阅读全文
posted @ 2014-04-22 15:28 echoht 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 这道题的难点在于:1. 对链表排序,这样就不能向访问数组一样随机访问里头的元素;2. 题中要求时间复杂度为O(nlogn),且空间复杂度为O(1)我们一般了解的是快排和归并可以达到这样的时间复杂度,但是快排对于链表操作显得比较复杂(其实归并对这个链表操作也很复杂),而通常的归并的空间复杂度又是O(n... 阅读全文
posted @ 2014-04-22 11:07 echoht 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 这题是计算逆波兰表达式的最终值,使用stack的进栈出栈操作,可以很容易实现。下面是AC代码: 1 /** 2 * Evaluate the value of an arithmetic expression in Reverse Polish Notation. 3 * 这题就... 阅读全文
posted @ 2014-04-22 10:16 echoht 阅读(120) 评论(0) 推荐(0) 编辑
摘要: LeetCode上目前只提供Java、C++、Python,我都采用Java.这道题是一个简单题(借助Java String提供的trim()和spilt()),需要注意的是题目的具体要求:1. 反转后的字符串首尾的空格需去掉;2. 单词与单词之间若有多个空格,反转后只能保留一个空格。下面是AC代码... 阅读全文
posted @ 2014-04-22 10:13 echoht 阅读(135) 评论(0) 推荐(0) 编辑