算法Day-4

ops/2024/10/20 17:11:00/

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

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

示例 1:

输入:head = [1,2,3,4]
输出:[2,1,4,3]

示例 2:

输入:head = []
输出:[]

示例 3:

输入:head = [1]
输出:[1]

本题意思为要求我们两两交互链表中的节点,而不是直接修改链表的值

我们可以定义一个虚拟头节点,让其指向头节点,从而使头节点和下一个节点进行交互。       

再while循环中判断如果cur.next不为空并且cur.next.next也不为空时才能进行交互,意思是当虚拟头节点的下两位有节点才能交互。然后在交互的过程中首先要将cur指向它的下两位,为了避免头节点找不到我们需要事先将头节点存入临时节点中,并且将第三位节点也就是转换完要连接的节点也保存下来这里叫它第三节点。将cur 指向第二节点后,将cur.next.next指向头节点我们刚刚保存的临时节点,在将cur.next.next.next指向第三节点。然后将cur向下移动两个节点。依次循环

    /*** Definition for singly-linked list.* public class ListNode {*     public int val;*     public ListNode next;*     public ListNode(int val=0, ListNode next=null) {*         this.val = val;*         this.next = next;*     }* }*/public class Solution {public ListNode SwapPairs(ListNode head) {ListNode dummyNode= new ListNode();dummyNode.next = head;ListNode cur = dummyNode;while(cur.next!=null&&cur.next.next!=null){ListNode firstNode = cur.next;ListNode thirdNode = cur.next.next.next;cur.next = cur.next.next;cur.next.next = firstNode;cur.next.next.next = thirdNode;cur = cur.next.next;}return dummyNode.next;}}

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

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

示例 1:

输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]

示例 2:

输入:head = [1], n = 1
输出:[]

示例 3:

输入:head = [1,2], n = 1
输出:[1]

本题思路,因为链表没有直接获取长度的方法,我们可以使用双指针,快慢指针进行定义并且赋值为虚拟头节点,然后我们让快指针先移动n个节点因为要删除倒数第n个节点,我们让快慢指针相差n个节点就可以实现当快指针移动到next为null时慢指针正好在要删除的节点前一个从而实现删除操作。

/*** Definition for singly-linked list.* public class ListNode {*     public int val;*     public ListNode next;*     public ListNode(int val=0, ListNode next=null) {*         this.val = val;*         this.next = next;*     }* }*/
public class Solution {public ListNode RemoveNthFromEnd(ListNode head, int n) {ListNode dummyNode = new ListNode(0,head);ListNode fast = dummyNode;ListNode slow = dummyNode;for(int i = 0;i<n;i++){fast = fast.next;}while(fast.next!=null){fast = fast.next;slow = slow.next;}slow.next = slow.next.next;return dummyNode.next;}
}

该题输入相交值为val,和相交节点的在每个链表的位置。从0开始,我们需要返回相交节点为头节点的链表,这里我们将两个链表头节点赋值个两个临时节点,遍历这两个链表,如果当前节点不为空就指向当前链表下一个,如果为空就将另一个链表赋值给当前节点,再次遍历,两个节点相等,结束返回一个即可。

/*** Definition for singly-linked list.* public class ListNode {*     public int val;*     public ListNode next;*     public ListNode(int x) { val = x; }* }*/
public class Solution {public ListNode GetIntersectionNode(ListNode headA, ListNode headB) {ListNode p = headA;ListNode q = headB;while(p!=q){p = p==null?headB:p.next;q = q==null?headA:q.next;}return p;}
}


http://www.ppmy.cn/ops/127036.html

相关文章

搜维尔科技:使用Manus Primel Xsens数据手套直接在Xsens及其插件中捕获手指数据

使用Manus Primel Xsens数据手套直接在Xsens及其插件中捕获手指数据 搜维尔科技&#xff1a;使用Manus Primel Xsens数据手套直接在Xsens及其插件中捕获手指数据

证件照小程序源码,前后端稳定运行

演示&#xff1a;证寸照制作 运行环境: Linux Nginx PHP >5.6 MySQL>5.6 安装步骤: 1.下载源码上传至你的服务器宝塔面板 2.直接添加站点选择源码目录&#xff0c;新建数据库 3.设置代码执行目录为/web 4.在浏览器中输入你的域名&#xff0c;会提示安装&#xff0c;填写…

2024最新Navicat Pro 中文版本图文教程

Navicat Premium 是一款支持多数据库连接的开发工具&#xff0c;兼容 MySQL、Redis、PostgreSQL 等多种数据库&#xff0c;以及 Amazon RDS、Azure 等云服务。 它提供了数据库的构建、管理和维护功能。用户可以在一个应用内查看、更新记录&#xff0c;通过数据分析工具进行可视…

华为OD机试 - 项目排期 - 二分查找、回溯(Python/JS/C/C++ 2024 D卷 200分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

伪装成CrowdStrike修复文件的攻击活动分析

1 概览 近日&#xff0c;使用CrowdStrike公司终端安全产品的Windows操作系统主机遭遇了严重的系统崩溃问题&#xff0c;即“蓝屏死机”&#xff08;Blue Screen of Death,BSOD&#xff09;&#xff0c;导致计算机系统无法正常运行。此次事件波及范围极为广泛&#xf…

IT运维的365天--017 如何在两台Linux服务器之间快速传输文件夹(同时设置免密)

前情提要(两台Linux服务器之间传输批量文件夹): 两台都是外网服务器,都是Linux系统(CentOS),都安装了宝塔,用于搭建巨量的静态网站,由于A服务器准备不要了,所以要在A服务器转移几百个静态网站到B服务器。 Linux下scp单命令传输文件夹测试: 准备工作,先测试转移一…

docker 基础镜像里 scratch 和alpine,ubuntu centos详细对比(镜像优化)

1. scratch 特点 极简&#xff1a;scratch 是一个空的镜像&#xff0c;没有任何操作系统或文件系统。 体积&#xff1a;scratch 镜像的大小几乎为零&#xff0c;是最小的镜像。 灵活性&#xff1a;完全由用户自定义&#xff0c;没有任何预装的工具或库。 依赖管理&#xff1…

Linux下内核空间和用户空间内存映射图详解

目录 一、简介二、内存空间定义三、内存权限四、内存空间映射图4.1 32位系统4.2 64位系统4.3 映射空间解析 五、其他相关链接1、关于linux下内存管理内容总结2、Linux内核中kzalloc分配内存时用的参数GFP_KERNEL详解3、Linux下stream内存带宽测试参数和示例详解附源码总结 一、…