摘要:
Merge Sort.public class Solution { public ListNode sortList(ListNode head) { if(head == null || head.next == null) return head; ListN... 阅读全文
posted @ 2014-12-29 13:30
江南第一少
阅读(93)
评论(0)
推荐(0)
摘要:
Insertion Sort就是把一个一个元素往已排好序的list中插入的过程。初始时,sorted list是空,把一个元素插入sorted list中。然后,在每一次插入过程中,都是找到最合适位置进行插入。因为是链表的插入操作,需要维护pre,cur和next3个指针。pre始终指向sorted... 阅读全文
posted @ 2014-12-29 13:12
江南第一少
阅读(94)
评论(0)
推荐(0)
摘要:
参考链接1参考链接2两个stack:public class Solution { public List postorderTraversal(TreeNode root) { Stack s1 = new Stack(); Stack s2 = new Stac... 阅读全文
posted @ 2014-12-29 11:19
江南第一少
阅读(107)
评论(0)
推荐(0)
摘要:
三步走: 第一步,分成两部分;第二步,将第二部分reverse;第三步,将两个list merge起来。一定要舍得画图,把指针的指向搞清楚。public class Solution { public void reorderList(ListNode head) { if(he... 阅读全文
posted @ 2014-12-29 06:40
江南第一少
阅读(96)
评论(0)
推荐(0)
摘要:
找到相遇的点之后,只要让两个指针分别从head 和相遇点出发,走同样多的步数再相遇,就找到了链接开始的地方了。要画个证明一下。public class Solution { public ListNode detectCycle(ListNode head) { if(head ... 阅读全文
posted @ 2014-12-29 06:08
江南第一少
阅读(69)
评论(0)
推荐(0)
摘要:
经典题,送分题,做过无数遍。public class Solution { public boolean hasCycle(ListNode head) { if(head == null) return false; ListNode slow = head; ... 阅读全文
posted @ 2014-12-29 05:37
江南第一少
阅读(88)
评论(0)
推荐(0)
摘要:
本题跟一般DFS不同的是,需要先利用Word Break I 的结果来判断是否能Break,如果不能break,直接裸上DFS,会超时。check 完是否能Break之后就跟一般DFS 一样了。(一般来说,如果不check且不能break,DFS在忙活一阵之后会返回一个空List,但OJ贱贱的有一个... 阅读全文
posted @ 2014-12-29 05:13
江南第一少
阅读(125)
评论(0)
推荐(0)
摘要:
dp, 用个数组记下前i个字符是否能被break,而递推公式是:如果已知dp[0] ~ dp[i], 对从0~i 中任意 j,如果有dp[j]&&s.substring(j, i+1) 为true,则dp[i+1] 为true。public class Solution { public bo... 阅读全文
posted @ 2014-12-29 02:48
江南第一少
阅读(117)
评论(0)
推荐(0)
摘要:
跟Clone Graph的实现细节上有些相似的地方,都要用个map记住已存在结点和新建结点之间的映射。循环两遍,空间O(N).public class Solution { public RandomListNode copyRandomList(RandomListNode head) { ... 阅读全文
posted @ 2014-12-29 01:58
江南第一少
阅读(98)
评论(0)
推荐(0)

浙公网安备 33010602011771号