leetcode中等82删除排序链表中的重复元素 II
Posted qq_40707462
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode中等82删除排序链表中的重复元素 II相关的知识,希望对你有一定的参考价值。
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。
返回同样按升序排列的结果链表。
思路1:遍历
class Solution
public ListNode deleteDuplicates(ListNode head)
if(head==null || head.next==null) return head;
ListNode dummy=new ListNode(0);
dummy.next=head;
ListNode cur=dummy;
while(cur.next!=null && cur.next.next!=null)
if(cur.next.val==cur.next.next.val)
int t=cur.next.val;
while(cur.next!=null && cur.next.val==t) cur.next=cur.next.next;
else cur=cur.next;
return dummy.next;
时间复杂度o(n)
思路2:递归
class Solution
public ListNode deleteDuplicates(ListNode head)
if(head==null || head.next==null) return head;
ListNode next=head.next;
if(head.val==next.val)
while(next!=null && head.val==next.val) next=next.next;
head=deleteDuplicates(next);
else head.next=deleteDuplicates(next);
return head;
时间复杂度o(n),每个节点访问过一次
以上是关于leetcode中等82删除排序链表中的重复元素 II的主要内容,如果未能解决你的问题,请参考以下文章
迭代LeetCode 82. 删除排序链表中的重复元素 II