题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
实验平台:牛客网
解决思路:
java:
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ListNode deleteDuplication(ListNode pHead){
if (pHead == null) {
return null;
}
ListNode node = pHead;
ListNode preNode = null;
ListNode nextNode = null;
while (node != null) {
nextNode = node.next;
boolean needDelete = false;
if (nextNode != null && nextNode.val == node.val) {
needDelete = true;
}
if (!needDelete) {
preNode = node;
node = nextNode;
}else{
int value = node.val;
ListNode deleteNode = node;
while (deleteNode != null && deleteNode.val == value) {
nextNode = deleteNode.next;
deleteNode = null;
deleteNode = nextNode;
}
if(preNode == null){
pHead = nextNode;
}else{
preNode.next = nextNode;
}
node = nextNode;
}
}
return pHead;
}
}
python: