设计一种方法,从无序链表中删除重复项。
样例
样例 1:
输入:1->2->1->3->3->5->6->3->null
输出:1->2->3->5->6->null
样例 2:
输入:2->2->2->2->2->null
输出:2->null
挑战
如果没有临时缓冲区,如何解决这一问题?
解题思路1:
利用HashSet来去重。时间复杂度O(n),空间复杂度O(n)
/**
* Definition for ListNode
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
/**
* @param head: The first node of linked list.
* @return: Head node.
*/
public ListNode removeDuplicates(ListNode head) {
// write your code here
Set<Integer> set = new HashSet<>();
ListNode node = new ListNode(0);
ListNod

该博客讨论了如何从无序链表中删除重复项,提供了两种解题思路:一是使用HashSet进行去重,时间复杂度为O(n),空间复杂度为O(n);二是采用两指针双层循环的方法,时间复杂度为O(n*n),空间复杂度为O(1)。文章包含了样例和挑战,挑战部分提出在没有临时缓冲区的情况下解决此问题。
最低0.47元/天 解锁文章
278

被折叠的 条评论
为什么被折叠?



