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

总结:

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

相关推荐
立志成为大牛的小牛12 分钟前
数据结构——四十九、B树的删除与插入
数据结构·学习·程序人生·考研·算法
拾零吖1 小时前
数据结构与算法
数据结构
理人综艺好会3 小时前
redis学习之基础数据结构
数据结构·redis·学习
星轨初途3 小时前
数据结构二叉树之链式结构(3)(下)
c语言·网络·数据结构·经验分享·笔记·后端
valan liya3 小时前
C++list
开发语言·数据结构·c++·list
fashion 道格3 小时前
深入理解数据结构:单链表的 C 语言实现与应用
c语言·数据结构
子一!!3 小时前
数据结构===Map/Set (2)===
数据结构
yuuki2332334 小时前
【C语言&数据结构】二叉树的链式递归
c语言·数据结构·后端
前端小L7 小时前
图论专题(十五):BFS的“状态升维”——带着“破壁锤”闯迷宫
数据结构·算法·深度优先·图论·宽度优先
福尔摩斯张13 小时前
Axios源码深度解析:前端请求库设计精髓
c语言·开发语言·前端·数据结构·游戏·排序算法