83. 删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
分析:使用双指针删除,两个指针指向相邻的两个节点,如果两节点值相等,前节点指向后节点的下一个节点;不相同,双节点同时向后移动,直到判断到后节点为 null。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {val = x;}
* }
*/
class Solution {public ListNode deleteDuplicates(ListNode head) {if(head==null){return null;}
ListNode pre=head;
ListNode cur=head.next;
while(cur!=null){
// 相同,前节点指向后节点的下一个节点,后节点改为下一个他的下一个节点
if(pre.val==cur.val){
pre.next=cur.next;
cur=pre.next;
}else{
// 不相同,同时往后移动
pre=cur;
cur=cur.next;
}
}
return head;
}
}