上一个帖子和大家探讨了动态规划篇,今天继续更新链表篇,有任何问题可以在评论区留言,我会一一解答。
链表是一个非常经典的数据结构,但是也非常tricky,而且常见的是令人虎躯一震的空间in place要求,由于链表的一些特殊性质,经常会作为一个面试考察的重点。
我们先看一个原题:
从已排序的链表中移除重复的单元,如
1->1->2, 返回 1->2.
1->1->2->3->3, 返回 1->2->3
思路很简单,双指针,指针往后找,碰到相同的数值,继续往后,直到第一个不同的数,讲慢指针的next指向快指针,得解。关键在于one pass,一次过,如果搞个哈希表来做那是画蛇添足,空间上不是最优解,而空间的考察其实是链表的重中之重,所以这就是我一直强调的,哈希虽好,但要慎用。
全部评论
(4) 回帖