题目链接:
https://www.nowcoder.com/practice/fc533c45b73a41b0b44ccba763f866ef?
题目描述:
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。
例如:
链表1->2->3->3->4->4->5 处理后为 1->2->5
基本思路:
定义一个带傀儡节点的新链表以返回结果,循环遍历原链表如果原链表中当前节点是否为重复节点,如果不为重复节点,将当前节点尾插到新链表。
代码实现:
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ListNode deleteDuplication(ListNode pHead)
{
ListNode newHead = new ListNode(-1);
ListNode newTail = newHead;
ListNode cur = pHead;
while (cur != null) {
if (cur.next != null && cur.val == cur.next.val) {
while (cur.next != null && cur.val == cur.next.val) {
cur = cur.next;
}
cur = cur.next;
} else {
newTail.next = new ListNode(cur.val);
newTail = newTail.next;
cur = cur.next;
}
}
return newHead.next;
}
}