leetcode做题笔记82删除排序链表中的重复元素 II

给定一个已排序的链表的头 head删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表

思路一:模拟题意

cpp 复制代码
struct ListNode* deleteDuplicates(struct ListNode* head){
    if (head == NULL || head->next == NULL) return head;
    struct ListNode nhead = {NULL, 0};
    struct ListNode* p1 = head;
    struct ListNode* p2 = &nhead;
    int n,value;
    while (p1) {
        struct ListNode* tmp = p1;
        for (n = 0,value = p1->val; p1 != NULL && p1->val == value; ++n)
            p1 = p1->next;
        if (n == 1) {  
            p2->next = tmp;
            p2 = tmp;
        }
    }
    p2->next = NULL;
    return nhead.next;
}

分析:

本题将重复的元素全部删除,可以考虑新建一个链表,若有重复元素则不放入新链表中,最后输出新链表即可。链表操作需要用另一个链表记录原来位置,当n==1时令p2指向tmp,最后输出nhead

总结:

本题考察链表删除操作,即判断元素是否重复,若重复则不放入新链表中,最后返回即可

相关推荐
想带你从多云到转晴16 小时前
07、数据结构与算法---优先级队列(堆)与排序
java·数据结构·算法
会编程的吕洞宾17 小时前
跳表_Skip_List_的_凌云九阶阵__从概率平衡到_Redis
数据结构·redis·list
少司府17 小时前
C++基础入门:深挖list的那些事
开发语言·数据结构·c++·容器·list·类型转换·类和对象
罗超驿17 小时前
14.MySQL索引底层原理:从数据结构到B+树的深度解析
数据结构·b树·mysql
孬甭_17 小时前
单链表详解
c语言·数据结构
鱼子星_18 小时前
【数据结构与算法】数据结构基础——栈和队列
c语言·数据结构
承渊政道18 小时前
【贪心算法】(经典实战应用解析(三):K次取反后最⼤化的数组和、按⾝⾼排序、优势洗牌、最⻓回⽂串、增减字符串匹配)
数据结构·c++·学习·算法·贪心算法·线性回归·哈希算法
Lucky_ldy18 小时前
C语言学习:动态内存管理(数据结构关键)
c语言·数据结构·学习
邪修king18 小时前
C++ 二叉搜索树 (BST) 超全详解:核心原理、完整实现、性能分析与使用场景
数据结构·c++·bst·二叉树搜索树
诙_18 小时前
C++数据结构学习总结
数据结构·c++·学习