【leetcode】- 83.Remove Duplicates from Sorted List

1、题目描述

Given a sorted linked list, delete all duplicates such that each element appear only once.

  • Example 1:

Input: 1->1->2
Output: 1->2

  • Example 2:

Input: 1->1->2->3->3
Output: 1->2->3

2、问题描述:

  • 删除链表中重复的值。

3、问题关键:

  • 双指针,因为是排好序的,一个先走,指导前后指针值不一样的时候,将后面的指针指向的元素指向先走指针指向的元素,并移动后面的指针。

4、C++代码:

class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        if (!head) return nullptr;
        ListNode *first = head, *second = head;
        while(first) {
            if (first->val != second->val) {//让first先走,直到走到两个位置的值不一样了。
                second->next = first;//让second指向的元素指向first指向的元素。
                second = first;//移动second指针。
            }
            first = first->next;//first向后移动一步。
        }
        second->next = nullptr;//
        return head;
    }
};

你可能感兴趣的:(【leetcode】- 83.Remove Duplicates from Sorted List)