当前位置: 首页 > news >正文

代码随想录算法训练营31期day4,力扣24+19+02.07+142

24,动指针

class Solution {
public:ListNode* swapPairs(ListNode* head) {//建立虚拟头结点auto dummy=new ListNode(-1);dummy->next=head;for(auto p=dummy;p->next&&p->next->next;){auto a=p->next;auto b=a->next;p->next=b;a->next=b->next;b->next=a;p=a;}return dummy->next;}
};

19

class Solution {
public:ListNode* removeNthFromEnd(ListNode* head, int n) {auto dummy=new ListNode(-1);dummy->next=head;int len=0;for(auto p=dummy;p;p=p->next) len++;for(auto p=dummy;p;p=p->next){len--;//先减,因为需要倒数第N个的前面一个来改变指针if(n==len){p->next=p->next->next;break;}}return dummy->next;}
};

02.07
找两个链表相交的第一个节点,可以先遍历链表B,每遍历一个节点,再遍历链表A看是否有相等的节点,如果有直接返回此节点即可。如果没有继续循环

class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {auto p1=headA;while(p1){auto p2=headB;while(p2){if(p1==p2) return p1;p2=p2->next;//将B链表的所有节点与A链表第一个节点比较看是否匹配}p1=p1->next;}return NULL;}
};

142
快慢指针
在这里插入图片描述
第一次相遇在c点,slow退回y步到b,quick退回2y步到c撇,由于,这一定是上一步走到的位置,所以,可以理解成,在这一步,slow走了x到b,quick走了2x到c撇,圈的长度就是x+y,再回到相遇点c,此时slow和quick均在c点,c到b距离是x,和a到b一样,所以把送slow放回头结点,quick不动,还在c点,各进一步,最终第一次会相遇在b点

class Solution {
public:ListNode *detectCycle(ListNode *head) {auto slow=head;auto quick=head;while(quick&&quick->next){slow=slow->next;quick=quick->next->next;if(slow==quick){slow=head;while(slow!=quick){slow=slow->next;quick=quick->next;}return slow;}}return NULL;}
};
http://www.lryc.cn/news/288386.html

相关文章:

  • eNSP学习——利用单臂路由实现VLAN间路由
  • ISO27001认证:企业与个人发展的必备之选
  • SpringBoot使用druid
  • TongWeb8交流常见问答集
  • GBASE南大通用分享-mysql中的load data infile用法
  • Ubuntu18编译jdk8源码
  • 《开始使用PyQT》 第01章 PyQT入门 02 安装Python3和PyQT6
  • Java集合-Map接口(key-value)
  • 【操作系统】实验九 写一个设备驱动程序
  • 基于密码技术的身份认证——基于对称密码体制的身份认证
  • 算法36:单调栈结构、子数组最小乘积的最大值问题(力扣1586)----单调栈
  • django mysql in 有序返回
  • c++24.1.26嵌套if语句
  • 机器学习--基础概念(二)
  • Ubuntu20.04 安装 ROS noetic + MAVROS
  • 【数学笔记】一元n次不等式,分式不等式,绝对值不等式
  • 转载-android性能优化
  • 笔记 | Clickhouse命令行查询
  • Dockerfile-xxxx
  • Vue中的$attrs
  • 使用阿里云的oss对象存储服务实现图片上传(前端vue后端java详解)
  • python实例100第32例:使用a[::-1]按相反的顺序输出列表的值
  • python执行脚本的时候获取输入参数
  • Halcon指定区域的形状匹配
  • Linux——常用命令
  • 外包干了2个月,技术反而退步了...
  • 洛谷C++简单题练习day6—P1830 城市轰炸
  • 【linux-interconnect】What NVIDIA MLNX_OFED is?
  • Unity开发中的XML注释
  • [MQ]常用的mq产品图形管理web界面或客户端