删除链表中重复的节点
删除链表中重复的结点
http://www.nowcoder.com/questionTerminal/fc533c45b73a41b0b44ccba763f866ef
/*
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 || pHead.next == null) return pHead;
//建立一个新节点指向当前头节点
ListNode pre = new ListNode(Integer.MIN_VALUE);
pre.next = pHead;
ListNode head = pre;
int preVal = pre.val;
while(pHead != null){
//与前一个节点相等的话,pre指向后一个节点
if(pHead.val == preVal) pre.next = pHead.next;
//不相等的话
//从当前节点开始,看后面一个节点是否与当前节点值相同,若相同
//将pre.next赋值为当前的next.next,然后跳过赋值pre继续循环
if(pHead.next != null && pHead.val == pHead.next.val) {
preVal = pHead.val;
pre.next = pHead.next.next;
pHead = pre.next;
continue;
}
pre = pHead;
pHead = pHead.next;
}
//返回新建节点的下一个即答案
return head.next;
}
}