题目
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
c#
思路
先判断给定的链表是否为空或者只有一个元素,若是直接返回即可。若不是,需要判断是否有重复元素,有则需要将其删除。首先定义两个指针,把head与head.next的值分别赋给它们,接着判断是否有重复元素,若有,则通过双指针的方式,一个指针遍历链表,一个始终指到不重复的下一位。处理完后,在最后将第一个指针的下一个节点设为null。
/**
* Definition for singly-linked list.
* public class ListNode {
* public int val;
* public ListNode next;
* public ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode DeleteDuplicates(ListNode head) {
while(head==null||head.next==null)
{
return head;
}
ListNode l1=head;
ListNode l2=head.next;
while(l2!=null)
{
while(l1.val!=l2.val)
{
l1.next=l2;
l1=l2;
}
l2=l2.next;
}
l1.next=null;
return head;
}
}