删除排序链表中的重复元素
题目
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list
思路
双指针,一个指向不重复的最后一节点,一个负责遍历。要注意遍历结束后,将第一个指针的下一个节点设为null。
源代码(C#)
/**
* 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)
{
if (head == null || head.next == null)
{
return head;
}
ListNode currentNode = head;
ListNode loopNode = head.next;
while (loopNode != null)
{
if (loopNode.val != currentNode.val)
{
currentNode.next = loopNode;
currentNode = loopNode;
}
loopNode = loopNode.next;
}
currentNode.next = null;
return head;
}
}