代码随想录算法训练营第四天

● 自己看到题目的第一想法

24.两两交换链表中的节点

  1. 方法:虚拟头节点

  2. 思路:
    设置虚拟头节点dummyhead
    设置临时指针cur = dummyhead; cur每次向前移动两步
    循环条件: cur != nullptr && cur->next != nullptr && cur->next->next !=nullptr
    循环体如图所示:
    在这里插入图片描述

    返回:dummyhead->next;

  3. 注意:

  4. 代码:

/**
* Definition for singly-linked list.
* struct ListNode {
*     int val;
*     ListNode *next;
*     ListNode() : val(0), next(nullptr) {}
*     ListNode(int x) : val(x), next(nullptr) {}
*     ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
   ListNode* swapPairs(ListNode* head) {
       ListNode* dummyhead = new ListNode(0);
       dummyhead->next = head;
       ListNode*cur = dummyhead;
     	while(cur != nullptr && cur->next != nullptr && cur->next->next !=nullptr){
           ListNode* temp = cur->next;
           ListNode* temp1 = cur->next->next->next;
           
           cur->next = cur->next->next;
           cur->next->next = temp;
           cur->next->next->next = temp1;

           cur = cur->next->next;
       }
       return dummyhead->next;
   }
};

  1. 运行结果:
    在这里插入图片描述

19.删除链表的倒数第 N 个结点

  1. 方法一:
    设置临时指针cur , 找到倒数第n个节点的前一个节点(正着数 的第size-n 个节点),让cur->next = cur->next->next;
    最后返回dummyhead->next;

  2. 思路:

  3. 注意:

  4. 代码:

/**
* Definition for singly-linked list.
* struct ListNode {
*     int val;
*     ListNode *next;
*     ListNode() : val(0), next(nullptr) {}
*     ListNode(int x) : val(x), next(nullptr) {}
*     ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
   ListNode* removeNthFromEnd(ListNode* head, int n) {
       int size = 0;
       ListNode * cur = head;
       while(cur !=nullptr){
           cur = cur->next;
           size++;
       }

       ListNode* dummyhead = new ListNode(0, head);
       ListNode * cur1 = dummyhead;
       for(int i =0; i< size-n; i++){
           cur1 = cur1->next;
       }
       cur1->next = cur1->next->next;
       return dummyhead->next;
   }
};
  1. 运行结果:
    在这里插入图片描述

  2. 方法二:双指针

  3. 思路:如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的节点就可以了。

  4. 注意:

  5. 代码:

/**
* Definition for singly-linked list.
* struct ListNode {
*     int val;
*     ListNode *next;
*     ListNode() : val(0), next(nullptr) {}
*     ListNode(int x) : val(x), next(nullptr) {}
*     ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
   ListNode* removeNthFromEnd(ListNode* head, int n) {
       ListNode * dummyhead = new ListNode(0, head);
       ListNode * fast = dummyhead;
       ListNode * slow = dummyhead;

       // while(n-- && fast !=nullptr){
       //     fast = fast->next;
       // }
       for(int i=1; i< n+1; i++){
           fast = fast->next;
       }
       fast = fast->next;
       while(fast !=nullptr){
           fast = fast->next;
           slow = slow->next;
       }
       slow->next = slow->next->next;

       return dummyhead->next;
   }
};
  1. 运行结果:
    在这里插入图片描述

07.链表相交

  1. 方法:
  2. 思路:
  3. 注意:
  4. 代码:
  5. 运行结果:

142.环形链表II

  1. 方法:
  2. 思路:
  3. 注意:
  4. 代码:
  5. 运行结果:

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

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

相关文章

【Java设计模式】四、适配器模式

文章目录 1、适配器模式2、举例 1、适配器模式 适配器模式Adapter Pattern&#xff0c;是做为两个不兼容的接口之间的桥梁目的是将一个类的接口转换成客户希望的另外一个接口适配器模式可以使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 最后&#xff0c;适配器…

【软件测试】--功能测试3

一、用例执行 说明&#xff1a;执行结果与用例的期望结果不一致&#xff08;含义&#xff09;&#xff0c;为缺陷。 执行失败的用例 提示&#xff1a;用例执行不通过为缺陷&#xff0c;需要进行缺陷管理 二、缺陷 2.1 定义 软件中存在的各种问题&#xff0c;都为缺陷&#…

UE4c++ ConvertActorsToStaticMesh

UE4c ConvertActorsToStaticMesh ConvertActorsToStaticMesh UE4c ConvertActorsToStaticMesh创建Edior模块&#xff08;最好是放Editor模块毕竟是编辑器代码&#xff09;创建UBlueprintFunctionLibraryUTestFunctionLibrary.hUTestFunctionLibrary.cpp:.Build.cs 目标:为了大量…

uniapp android 原生插件开发-测试流程

前言 最近公司要求研究一下 uniapp 的 android 原生插件的开发&#xff0c;为以后的工作做准备。这篇文章记录一下自己的学习过程&#xff0c;也帮助一下有同样需求的同学们 : ) 一、下载安装Hbuilder X , Android studio&#xff08;相关的安装配置过程网上有很多&#xff0c;…

【Java EE初阶二十六】简单的表白墙(二)

2. 后端服务器部分 2.1 服务器分析 2.2 代码编写 2.2.2 前端发起一个ajax请求 2.2.3 服务器读取上述请求,并计算出响应 服务器需要使用 jackson 读取到前端这里的数据,并且进行解析&#xff1a; 代码运行图&#xff1a; 2.2.4 回到前端代码&#xff0c;处理服务器返回的响应…

【.NET Core】深入理解IO之File类

【.NET Core】深入理解IO之File类 文章目录 【.NET Core】深入理解IO之File类一、概述二、File类2.1 File.AppendAllLines方法2.2 File.AppendAllText方法2.3 File.Copy 方法2.4 File.Create 方法2.5 File.Decrypt(String) 方法2.6 File.Delete(String) 方法2.7 File.Move 方法…

Nginx+Tomcat实现动静分离

文章目录 一.动静分离的原理及架构1.1 动静分离是什么&#xff1f;1.2 动静分离的原理1.3 动静分离的架构组成 二.NginxTomcat实现动静分离2.1实验环境2.2所需软件环境2.3nginx服务的实现2.4配置动静分离 一.动静分离的原理及架构 1.1 动静分离是什么&#xff1f; 动静分离(S…

Android 15的新功能介绍

虽然谷歌已经发布了 Android 15 Preview 1&#xff0c;但这并不是完整的更新&#xff0c;因为该公司计划在后续的每月测试版中引入新功能。但这可能会让您思考&#xff0c;“Android 15 带来了哪些新功能&#xff1f;” 为了寻找答案&#xff0c;让我们深入了解 Android 15。 …

pr2024 Premiere Pro 2024 mac v24.2.1中文激活版

Premiere Pro 2024 for Mac是Adobe公司推出的一款强大的视频编辑软件&#xff0c;专为Mac操作系统优化。它提供了丰富的剪辑工具、特效和音频处理选项&#xff0c;帮助用户轻松创建专业级的影视作品。 软件下载&#xff1a;pr2024 Premiere Pro 2024 mac v24.2.1中文激活版 无论…

Linux yum安装pgsql出现Bad GPG signature错误

官方文档&#xff1a;https://www.postgresql.org/download/linux/redhat/ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo yum install -y postgresql12-server sudo /usr/pgsql-12/bin/…

【架构笔记1】剃刀思维-如无必要,勿增实体

欢迎来到文思源想的架构空间&#xff0c;前段时间博主做了一个工作经历复盘&#xff0c;10年开发路&#xff0c;走了不少弯路&#xff0c;也算积累了不少软件开发、架构设计的经验和心得&#xff0c;确实有必要好好盘一盘&#xff0c;作为个人的总结&#xff0c;同时也留给有缘…

【QT+QGIS跨平台编译】之五十四:【QGIS_CORE跨平台编译】—【qgssqlstatementlexer.cpp生成】

文章目录 一、Flex二、生成来源三、构建过程一、Flex Flex (fast lexical analyser generator) 是 Lex 的另一个替代品。它经常和自由软件 Bison 语法分析器生成器 一起使用。Flex 最初由 Vern Paxson 于 1987 年用 C 语言写成。 “flex 是一个生成扫描器的工具,能够识别文本中…

leetcode:134.加油站

解题思路&#xff1a;需要注意开始时的编号&#xff0c;有的可以走一圈&#xff0c;有的走不了 模拟过程&#xff1a;for循环主要是用来模拟线性的过程&#xff0c;而在这里它是环状的&#xff1b; 可以用暴力解法&#xff0c;但是在这里我用贪心来解决。 常见疑惑&#xff1…

阿里云国际云解析DNS如何开启/关闭流量分析?

流量分析服务会涉及产生日志费用&#xff0c;所以开通内网DNS解析服务后&#xff0c;默认不会主动开启流量分析&#xff0c;需要您手动开启流量分析。对于未开启流量分析的用户&#xff0c;进入界面会提示您展示的都是模拟数据&#xff0c;您可以点击开启流量分析服务&#xff…

nvm下载node指定版本后npm不存在

一&#xff0c;项目背景 接手一个老的项目&#xff0c;需要使用旧的node版本&#xff0c;使用nvm下载12.11.0版本后发现npm命令不存在。 二&#xff0c;原因 查找资料发现是8.11以上版本的node版本对应的npm都没法自动安装&#xff0c;需要自己到npm官网( https://registry.…

《TCP/IP详解 卷一》第9章 广播和本地组播

目录 9.1 引言 9.2 广播 9.2.1 使用广播地址 9.2.2 发送广播数据报 9.3 组播 9.3.1 将组播IP地址转换为组播MAC地址 9.3.2 例子 9.3.3 发送组播数据报 9.3.4 接收组播数据报 9.3.5 主机地址过滤 9.4 IGMP协议和MLD协议 9.4.1 组成员的IGMP和MLD处理 9.4.2 组播路由…

Linux--查看网络性能指标

一、性能指标有哪些&#xff1f; 带宽&#xff0c;表示链路的最大传输速率&#xff0c;单位是 b/s &#xff08;比特 / 秒&#xff09;&#xff0c;带宽越大&#xff0c;其传输能力就越强。延时&#xff0c;表示请求数据包发送后&#xff0c;收到对端响应&#xff0c;所需要的…

【iOS ARKit】网络传输 ARWorldMap

ARKit 可以利用 ARWorldMap 在应用中断后进行状态恢复、继续AR 进程。一个用户也可以将ARWorldMap 发送给其他用户&#xff0c;当其他用户接收并加载 ARWorldMap 后&#xff0c;就可以在相同的物理环境看到同样的虚拟元素&#xff0c;达到共享 AR体验的目的。 在ARKit 中&#…

【c语言】内存函数

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 memcpy函数的使用和模拟实现 memcpy函数的使用 memcpy函数的模拟实现 memmove的使用和模拟实现 memmove的使用 memmove的模拟实现 memset函数的使用 memcmp函数…

java中容器继承体系

首先上图 源码解析 打开Collection接口源码&#xff0c;能够看到Collection接口是继承了Iterable接口。 public interface Collection<E> extends Iterable<E> { /** * ...... */ } 以下是Iterable接口源码及注释 /** * Implementing this inte…