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;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。