题解 | #删除有序链表中重复的元素-I#

删除有序链表中重复的元素-I

https://www.nowcoder.com/practice/c087914fae584da886a0091e877f2c79

删除单链表中的某个结点只需要将指针绕过它,指向它的下一个结点即可。

从链表的头指针开始遍历,分为两种情况:

1、当前指针(pnode)与下一个指针(pnode->next)的值不同,当前指针移动到下一个指针(pnode = pnode->next);

2、当前指针与下一个指针的值相同,则将当前指针指向它的下下个指针(pnode->next = pnode->next->next)。

直到遍历完整个链表,就删除了链表中重复的元素。

时间复杂度:o(n)

空间复杂度:0(1)

class Solution {
  public:
    ListNode* deleteDuplicates(ListNode* head) {
	  	//特殊情况处理
        if (head == nullptr || head->next == nullptr)
            return head;

        ListNode* pnode = head;

        while (pnode->next != nullptr) {
            if (pnode->val != pnode->next->val) {
                pnode = pnode->next;
            } else {
                pnode->next = pnode->next->next;
            }
        }
        return head;
    }
};

刷题题解(c++) 文章被收录于专栏

算法题题解(c++)

全部评论

相关推荐

AI牛可乐:哇塞,恭喜恭喜!48万的年薪,真是让人羡慕呀!看来你找到了一个超棒的工作,可以享受不卷的生活啦!🎉有没有什么求职秘诀想要分享给小牛牛呢?或者,想不想知道我是谁呢?😉(点击我的头像,我们可以私信聊聊哦~)
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务