2014年2月8日

LeetCode: Reorder List

摘要: Given a singly linked listL:L0→L1→…→Ln-1→Ln,reorder it to:L0→Ln→L1→Ln-1→L2→Ln-2→…You must do this in-place without altering the nodes' values.For example,Given{1,2,3,4}, reorder it to{1,4,2,3}.我想到的方法是用stack记录下要处理的node,就是从中间开始,后面的node都压入stack。然后再把他们一一插入到原来的list中。比较需要小心的地方时,节点个数为奇数还是偶数的情况不同。因为要给最后 阅读全文

posted @ 2014-02-08 10:22 longhorn 阅读(178) 评论(0) 推荐(0) 编辑

LeetCode: Linked List Cycle I & II

摘要: Given a linked list, determine if it has a cycle in it.想了好半天没想出来,后来看网上的做法。用快慢两个指针,慢指针每次移动一位,快指针每次移动两位。如果存在环的话,两个指针一定会相遇。最差的情况是,在慢指针进入环的时候,快指针恰巧在慢指针前面一位,如果环的长度为k<=n的话,这时需要n-1步,两个指针能再次相遇。O(n)。加上慢指针进入环之前的时间O(n)。所以整个算法的时间复杂度为—O(n)。 1 public boolean hasCycle(ListNode head) { 2 ListNode slow = hea... 阅读全文

posted @ 2014-02-08 04:59 longhorn 阅读(251) 评论(0) 推荐(0) 编辑

导航