代码随想录算法训练营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;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/350448.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

详解SpringCloud之远程方法调用神器Fegin

第1章:引言 咱们作为Java程序员,在微服务领域里,Spring Cloud可谓是个耳熟能详的大名。它提供了一套完整的微服务解决方案,其中就包括了服务间的通信。在这个微服务中,有一个成员特别引人注意,它就是Feign。 那Feign到底是什么呢?简单来说,Feign是一个声明式的Web服务…

linux条件判断练习

1.实现自动生成相应的压缩包 1.写一个脚本,完成如下功能 传递一个参数给脚本,此参数为gzip、bzip2或者xz三者之一; (1) 如果参数1的值为gzip,则使用tar和gzip归档压缩/etc目录至/backups目录中,并命名为/backups/etc-…

1块9毛钱,修复拓牛TC1D智能垃圾桶盖子不能正常开合的故障

前言 21年9月份买了拓牛的智能垃圾桶,一直用的很流畅,再加上屋里没啥有机垃圾,也没有宠物,用上之后每次投入垃圾,之后都会盖上盖子,没有很多的异味散发,屋里也没有蟑螂等害虫。 再加上门口有帘…

Android开发学习-Activity

启停活动页面 1、启动和停止 startActivity(new Intent(原页面.this,目标页面.this)); startActivity(new Intent(this,ActFinishActivity.class)) 从当前页面回到上一个页面,相当于关闭当前页面,返回代码如下: finish(); 2、生命周期 …

鸿蒙:@Link装饰器-父子双向同步

子组件中被Link装饰的变量与其父组件中对应的数据源建立双向数据绑定。从API version 9开始,该装饰器支持在ArkTS卡片中使用。 需要注意:Link装饰的变量与其父组件中的数据源共享相同的值。Link装饰器不能在Entry装饰的自定义组件中使用。 一、装饰器使…

基于Python对二手车之家的数据采集与分析

1.1 用户需求 1.1.1 背景与现状 基于Python的二手车之家数据采集与分析的背景与现状分析 背景: 随着经济的发展和人们生活水平的提高,二手车市场逐渐兴起。二手车之家作为中国最大的二手车交易平台之一,提供了丰富的二手车信息&#xff0…

下载nacos 2.3 for arm64

客户组织安全测试,我们系统测出了好几个高危问题,其中大部分是关于nacos的。 原先的nacos版本太低了,是1.3的。现在(2024.01)已经是2.3了,应该装个新的。我们使用docker安装nacos,原本很简单的…

推荐几款便宜幻兽帕鲁游戏联机服务专用云服务器

随着互联网技术的发展,云服务器已经成为了许多游戏联机服务的首选。如果大家想要自行搭建幻兽帕鲁联机服务器,那么使用云服务器是一个很好的选择。下面,本文将推荐几款便宜幻兽帕鲁游戏联机服务专用云服务器。 幻兽帕鲁游戏对于服务器配置要求…

Windows 上面双网卡网络,配置为优先IPV4

多数网络游戏加速器是不支持IPV6的,即便支持IPV6也不好用,原因是IPV6在大陆并不是普及的状态,很多资源是没有的。 所以本文会教大家怎么让双IP栈的用户,怎么配置优先适用IPV4,并且IPV6也还可以用。 跟着我的步骤来&am…

互信息的简单理解

在介绍互信息之前,首先需要了解一下信息熵的概念:所谓信息熵,是指信息论中对一个随机变量不确定性的度量,对于随机变量x,信息熵的定义为: H ( x ) − ∑ x p ( x ) l o g p ( x ) H(x)-\sum_xp(x)logp(x) …

git安装步骤

安装环境:Windows10 64bit 下载 Git网址 :Git - Downloading Package 版本:Git-2.21.0-64-bit 第一步:双击下载后的Git-2.21.0-64-bit.exe,开始安装 安装开始 第二步:选择安装路径,点击[next]…

【云原生】Docker基于Dockerfile多级构建,实现缩小镜像体积

目录 一、基于上次的nginx的Dockerfile做多级构建 二、基于上次的php的Dockerfile修改做多级构建 三、基于上次的mysql的Dockerfile修改做多级构建 基于以上三个镜像构建 四、镜像体积是不是越小越好?为什么要缩减镜像体积? 五、缩小镜像体积的方法…

变相体罚的行为有哪些

你是否在无意中“伤害”了学生?每一位老师都如同辛勤的园丁,努力耕耘,期待花开。但在这个过程中,有些行为,虽不带皮肉之苦,却可能给学生的心灵留下难以愈合的创伤。今天,就让我们来谈谈这些隐蔽…

OpenHarmony—TypeScript到ArkTS约束说明

对象的属性名必须是合法的标识符 规则:arkts-identifiers-as-prop-names 级别:错误 在ArkTS中,对象的属性名不能为数字或字符串。通过属性名访问类的属性,通过数值索引访问数组元素。 TypeScript var x { name: x, 2: 3 };c…

2024最新幻兽帕鲁服务器多少钱一个?

幻兽帕鲁服务器多少钱?价格便宜,阿里云4核16G幻兽帕鲁专属服务器32元1个月、66元3个月,4核32G配置113元1个月、339元3个月;腾讯云4核16G14M服务器66元1个月、277元3个月、1584元一年。阿腾云atengyun.com分享阿里云和腾讯云palwor…

苹果笔记本MacBook电脑怎么卸载软件?三种方法快速卸载软件

苹果笔记本MacBook电脑是一款非常流行的电脑,但是有时候我们可能需要卸载一些不需要的软件。下面是一些简单的步骤,可以帮助您在MacBook电脑上卸载软件。 苹果笔记本MacBook电脑怎么卸载软件?三种实用方法快速卸载软件! 方法一&a…

【开源】基于JAVA语言的公司货物订单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供应商管理模块2.4 订单管理模块 三、系统展示四、核心代码4.1 查询供应商信息4.2 新增商品信息4.3 查询客户信息4.4 新增订单信息4.5 添加跟进子订单 五、免责说明 一、摘要 1.1 项目…

1. MySQL 数据库

本章内容 关系型数据库基础 安装 MySQL 管理数据库和表 用户和权限管理 函数,存储过程,触发器和事件 MySQL 架构 存储引擎 服务器选项,系统和状态变量 优化查询和索引管理 锁和事务管理 日志管理 备份还原 MySQL 集群 压力测试…

【星海随笔】unix 启动问题记录.

启动Ubuntu操作系统时,直接进入GRUB状态。 调试时候,曾显示 no bootable device no known filesystem detected 注意: 目前 GRUB 分成 GRUB legacy 和 GRUB 2。版本号是 0.9x 以及之前的版本都称为 GRUB Legacy ,从 1.x 开始的就称…