LeetCode题解-82-Remove Duplicates from Sorted List II

来源:互联网 发布:帝国坟场 阿富汗 知乎 编辑:程序博客网 时间:2024/05/23 19:02

原题



解题思路

利用两个节点node1与node2进行遍历,node2是node1的后驱节点

if(node1.next.val == node2.next.val) 那么此时存在重复的节点,
记录下此值val,将node1之后的所有值为val的节点删除;
else
node1与node2前进1步;

通过一次遍历可以将链表中重复的元素删除完毕。


图解



代码

public class Solution82 {    public ListNode deleteDuplicates(ListNode head) {        if(head == null || head.next == null)            return head;        ListNode dummy = new ListNode(0);        dummy.next = head;        ListNode node1 = dummy;        ListNode node2 = dummy.next;        while (node2 != null && node2.next != null){            if (node1.next.val == node2.next.val){                int  val = node1.next.val;                while (node1.next != null && node1.next.val == val){                    node1.next = node2.next;                    node2 = node1.next;                }            }            else {                node1 = node2;                node2 = node1.next;            }        }        return dummy.next;    }}



0 0
原创粉丝点击