今天看啥  ›  专栏  ›  亓官劼

C++描述 LeetCode83. 删除排序链表中的重复元素

亓官劼  · CSDN  ·  · 2020-10-24 10:15

C++描述 LeetCode83. 删除排序链表中的重复元素

大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客,唯一博客更新的地址为: 亓官劼的博客

本文原创为亓官劼,请大家支持原创,部分平台一直在恶意盗取博主的文章!!!


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

示例 1:

输入: 1->1->2
输出: 1->2
  • 1
  • 2
  • 1
  • 2

示例 2:

输入: 1->1->2->3->3
输出: 1->2->3
  • 1
  • 2
  • 1
  • 2

题解

从头开始遍历,如果相邻两个相等,则删除下一个结点,否则继续右移。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        if(head == NULL)
            return head;
        ListNode*p = head;
        while(p->next){
            // 如果当前的和下一个一样,那么删除下一个结点,当前结点不动
            if(p->val == p->next->val){
                p->next = p->next->next;
            }else{
                // 如果不同,则继续移动
                p =p->next;
            }
        }
        return head;
    }
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26



原文地址:访问原文地址
快照地址: 访问文章快照