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

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

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

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


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

示例 1:

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

示例 2:

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

题解

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

/**
 * 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;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_43422111/article/details/109253233