首页 > 其他分享 >JZ76 删除链表中重复的节点

JZ76 删除链表中重复的节点

时间:2024-04-13 21:12:08浏览次数:19  
标签:p2 JZ76 ListNode val next 链表 p1 节点

1、相似题
image
image

class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {

        //判空
        if(head == NULL )
            return nullptr;

        ListNode* p1 = head;
        ListNode* p2 = p1->next;
        while(p2)
        {
            if(p1->val != p2->val)
            {
                p1->next = p2;
                p1 = p1->next;
            }
            p2 = p2->next;
        }
        p1->next = p2;
        return head;
    }
};

2、JZ76 删除链表中重复的节点
image
image


/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
        val(x), next(NULL) {
    }
};
*/
class Solution {
public:
    ListNode* deleteDuplication(ListNode* pHead) {

        if(pHead == NULL ) return nullptr;

        ListNode* p = new ListNode(-1);
        p->next = pHead;
        ListNode* p1 = p;
        while(p1->next)
        {
            //设置p2指向p1的下一个的下一个节点
            ListNode* p2 = p1->next->next;
            //当p2不为空 且 p1的下一个的下一个节点的值等于p2的值 时循环
            while(p2 && p1->next->val == p2->val)
                p2 = p2->next;  //p2往后移动
            
            //判断p2是否往后移动,如果没有,则说明没有相同的节点出现,让p1往后移动
            if(p1->next->next == p2)    
                p1 = p1->next;
            //如果p2往后移动,就说明出现了重复的节点
            //那么p1和p2之间的节点就都是重复的节点,都是需要删除的节点
            else
                p1->next = p2;
        }
        return p->next;


    }
};

标签:p2,JZ76,ListNode,val,next,链表,p1,节点
From: https://www.cnblogs.com/H43724334/p/18133348

相关文章

  • JZ18删除表的节点
    /***structListNode{* intval;* structListNode*next;* ListNode(intx):val(x),next(nullptr){}*};*/classSolution{public:/***代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可***@param......
  • 数据结构-链表
    数据结构-链表1.链表的基本概念:链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向列表中下一个节点的引用(或指针)。2.单向链表:单向链表的每个节点只有一个指向下一个节点的链接。这种结构使得遍历只能单向进行,从头节点开始到尾节点结束。classNode:d......
  • 2-77. 修正 CropGenerator 和 AStar 地图节点生成
    修复Bug可以看到房子的上面生成了一棵树修改CropGenerator修改AStar我不太理解,反正照着改就算了吧项目相关代码代码仓库:https://gitee.com/nbda1121440/farm-tutorial.git标签:20240413_1246......
  • JZ22 链表中倒数最后k个节点
    /***structListNode{* intval;* structListNode*next;* ListNode(intx):val(x),next(nullptr){}*};*/classSolution{public:/***代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可***@param......
  • JZ52 两个链表的第一个公共节点
    /*structListNode{ intval; structListNode*next; ListNode(intx): val(x),next(NULL){ }};*/#include<endian.h>classSolution{public: //返回类型为节点指针类型,传入的是两个链表的头节点ListNode*FindFirstCommonNode(ListNode*pHead1,......
  • 2-70. 核心功能评估周围节点得到最短路径
    修改AStar项目相关代码代码仓库:https://gitee.com/nbda1121440/farm-tutorial.git标签:20240412_1338......
  • 2-69. 根据每个地图信息生成节点信息
    创建AStar脚本修改GridMapManager修改AStar脚本再写BuildPath方法再写FindShortestPath方法项目相关代码代码仓库:https://gitee.com/nbda1121440/farm-tutorial.git标签:20240412_1305......
  • BM2 链表内指定区间反转
    代码有点长,但是我比较喜欢这种做法。注意的点是如果第一个参与了反转,那么返回的就是区间反转之后的头结点,而不是原始头结点。importjava.util.*;/**publicclassListNode{*intval;*ListNodenext=null;*publicListNode(intval){*this.val=......
  • BM1 反转链表
    开始刷数据结构了。1.递归importjava.util.*;/**publicclassListNode{*intval;*ListNodenext=null;*publicListNode(intval){*this.val=val;*}*}*/publicclassSolution{publicListNodeReverseList(ListNodehea......
  • Flink源码学习(4) TaskManager从节点启动分析
    taskManager是flink的worker节点,负责slot的资源管理和task执行一个taskManager就是一台服务器的抽象TaskManager基本资源单位是slot,一个作业的task会部署在一个TM的slot上运行,TM会负责维护本地的slot资源列表,并与Master和JobManager进行通信启动主类:TaskManagerRunnerTaskMan......