每天一道LeetCode-----移除有序链表中的重复节点

本文探讨了如何解决LeetCode上的两道题目:移除有序链表中的重复节点。第一题要求保留一个重复元素,而第二题则要求完全移除重复元素。解题关键在于利用链表有序的特性,通过比较当前节点与前一个节点的值来判断是否为重复节点,并据此决定是否添加到结果链表中。文章提供了相应的代码实现思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Remove Duplicates from Sorted List

原题链接Remove Duplicates from Sorted List
这里写图片描述

给定一个有序链表,对于链表中所有重复元素,只保留一个,其余的都删掉

因为链表是有序的,而且所有重复节点中只需要保留一个,所以假设上一个找到的节点是prev,当前找到的节点是cur,那么只需要判断cur->val和prev->val是否相等,即可判断要不要将cur添加到结果链表中

/**
 * 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) {
        ListNode* prev = head;
        ListNode* cur = head->next;
        while(cur)
        {
            if(cur->val != prev->val)
            {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值