数据结构与算法之删除排序链表中的重复元素

删除排序链表中的重复元素

题目

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

示例 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;
    }
}

结果

在这里插入图片描述

发布了15 篇原创文章 · 获赞 4 · 访问量 1647

猜你喜欢

转载自blog.csdn.net/Mr_Angier/article/details/104867452