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

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

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

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    ListNode* deleteDuplicates(ListNode* head) {
	  // 注意快慢指针相当于结点的前一个结点,所以有好多next
        if(!head) return  NULL; // 如果链表为空,直接返回NULL
        ListNode* slow = new ListNode(-1);  // 创建慢指针链表头结点
        slow->next = head;
        ListNode* fast = new ListNode(-1);  // 创建快指针链表头结点
        fast->next = head;
        ListNode* result = slow;    // 创建返回结果的结点
        while(fast->next){  // 利用快指针链表头结点遍历链表
            if(fast->next->val == slow->next->val){	// 如果快慢指针的下一个结点的值相等,快指针后移
                fast = fast->next;
            } else {	// 如果快慢指针的下一个结点的值不相等
                slow->next->next = fast->next;	// 将慢指针的下一个结点的下一个结点替换成快指针的下一个结点
                slow = slow->next;	// 更新慢指针
                fast = fast->next;	// 更新快指针
            }
        }
        if(slow->next->next) slow->next->next = NULL;	// 如果慢指针的下一个节点的下一个结点不为空,说明最后几个节点都是相同的
        return result->next;
    }
};

全部评论

相关推荐

12-24 14:26
东北大学 Java
一只乌鸦:重邮+东北,好经典的学校
最后再改一次简历
点赞 评论 收藏
分享
回家当保安:复旦✌🏻,佬你的简历感觉挺好的,寒假日常hc比较少。佬可以过完年之后再试试,日常实习hc比较充足
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务