2014年9月18日
摘要: 实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。示例输入:单向链表a->b->c->d->e中的结点c。结果:不返回任何数据,但该链表变为:a->b->d->e。分析:因为无法访问待删除结点的前继结点,所以只能通过复制将后续链表整体向前移动一个位置,并删除最后一个多余的结点。显然,当... 阅读全文
posted @ 2014-09-18 22:11 游不动の鱼 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 实现一个算法,找出单向链表中倒数第k个结点。分析:使用相差k个位置的两个指针,以相同的速度遍历链表,当快指针为空时,慢指针刚好指向链表的倒数第k个结点。时间复杂度O(n),空间复杂度O(1)。 1 #include 2 #include 3 #include 4 5 using namesp... 阅读全文
posted @ 2014-09-18 21:32 游不动の鱼 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 编写代码,移除未排序链表中的重复结点。进阶如果不得使用临时缓冲区,该怎么解决?分析:使用set记录已访问过的值。时间复杂度O(n*logn),若使用unordered_set或者hash_set,则时间复杂度为O(n)。 1 #include 2 #include 3 #include 4 #... 阅读全文
posted @ 2014-09-18 21:11 游不动の鱼 阅读(152) 评论(0) 推荐(0) 编辑