Remove Duplicate(删除链表中的重复节点)
题目描述:
给定一个无序链表的头节点,删除其中出现重复的节点。
例子:
1->2->3->3->4->4-2->1->1->NULL。删除其中的重复节点后得到1->2->3->4->NULL。
解题思路:
首先我们第一个想法是记录下当前遍历过程中已经出现过的节点,这样在不断的遍历过程中只要是已经出现过的节点就直接删除。所以利用哈希表的思路。用一个哈希表记录遍历过程中得到的节点,然后每次遍历判断是否在表中,不在的情况加入表;在的情况下就直接删除当前节点。
代码如下:
|
|
解题思路2:
当然哈希表直观简单,但是利用了较多的空间。所以利用下面这种方法可以减少空间复杂度,同样时间复杂度会较高。
主要的想法是,首先遍历第一个节点,然后找到链表中所有和该节点相同的节点,删除掉,然后遍历下一个节点。时间复杂度为O(N^2),空间复杂度为O(1)。
代码如下:
|
|