Day04

今日任务

  • 24.两两交换链表中的节点
  • 19.删除链表的倒数第N个节点 
  • 160. 链表相交
  • 142.环形链表II 

24 两两交换链表中的节点

题目链接:https://leetcode.cn/problems/swap-nodes-in-pairs/description/

方法一:遍历实现

思路:

代码:

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode swapPairs(ListNode head) {ListNode dummyHead = new ListNode(0);dummyHead.next = head;ListNode temp = dummyHead;while(temp.next != null && temp.next.next != null) {ListNode node1 = temp.next;ListNode node2 = temp.next.next;temp.next = node2;node1.next = node2.next;node2.next = node1;temp = node1;}return dummyHead.next;}
}

 方法二:递归

目前不太理解


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

题目链接:https://leetcode.cn/problems/remove-nth-node-from-end-of-list/description/

关键是 找到链表的倒数的位置

思路:

  1. 两个指针,一块一慢,都指向 dummyNode
  2.  先让快指针 先走 n+1 步
  3. 然后两个指针一起移动,直到快指针走到尽头
  4. 此时 慢指针 指向的 Node 就是倒数第N个节点 的前面一个节点
  5. 然后 让 倒数第N 个节点的前节点 指向 倒数第N 个节点的 后节点
class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {ListNode dummyNode = new ListNode(0);dummyNode.next = head;ListNode fast = dummyNode;ListNode slow = dummyNode;for(int i = 0; i <= n; i++) {fast = fast.next;}while(fast != null) {fast = fast.next;slow = slow.next;}slow.next = slow.next.next;return dummyNode.next;}
}

160 链表相交

题目链接:https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci/description/

同样使双指针的问题,关键点在于,后面相交的部分长度是一致的,就要保存两个链表在后面长度是一致的时候才能开始遍历

思路:

  1. 先计算两个链表的长度,使 curA 指向的是不短的那个链表
  2. 让长的链表 先走 两个链表长度差值的长度,这样两个链表的剩余长度就保持一致
  3. 开始遍历两个链表,当指向的是同一个对象的时候,就是交点
public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode curA = headA;ListNode curB = headB;int lenA = 0, lenB = 0;while(curA != null) {lenA++;curA = curA.next;}while(curB != null) {lenB++;curB = curB.next;}curA = headA;curB = headB;//使 curA 指向的链表使长的链表if(lenA < lenB) {int tmp = lenA;lenA = lenB;lenB = tmp;ListNode tmpNode = curA;curA = curB;curB = tmpNode;}int gap = lenA - lenB;while(gap-- > 0) {curA = curA.next;}while(curA != null) {if(curA == curB) {return curA;}curA = curA.next;curB = curB.next;}return null;}
}

 142 环形链表II

题目链接:https://leetcode.cn/problems/linked-list-cycle-ii/description/

关键在于 要理解为什么一定是快的指针 从后面和 慢指针 相遇

一定是环内第一圈相遇

可知:x+y+z+y = 2 * (x + y)    =>  x = z;

 思路:

  1. 先理解为什么在环内,慢指针的第一圈相遇
  2. 将快指针放在头节点,慢指针依然为相遇节点
  3. 然后以同样速度,一次移动一个位置的话,就是走到环形入口相遇

代码:

public class Solution {public ListNode detectCycle(ListNode head) {ListNode fast = head;ListNode slow = head;while(true) {if(fast == null || fast.next == null) return null;fast = fast.next.next;slow = slow.next;if(fast == slow) break;}fast = head;while(slow != fast) {slow = slow.next;fast = fast.next;}return fast;}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux/OpenAdmin

Enumeration nmap 用nmap扫描发现目标对外开放了22和80&#xff0c;端口详细信息如下 从nmap的结果看到&#xff0c;是apache的default page&#xff0c;使用工具跑一下目录&#xff0c;看了官 网文档的结果然后写个小字典节约时间&#xff0c;扫描结果如下 On the page at /…

new Handler(getMainLooper())与new Handler()的区别

Handler 在Android中是一种消息处理机制。 new Handler(); 创建handler对象&#xff0c;常用在已经初始化了 Looper 的线程中调用这个构造函数&#xff08;即非主线程&#xff09;&#xff0c;如果感觉不好理解&#xff0c;可以把Handler handler new Handler() 理解为常用在…

Redis学习指南(11)-Redis的有序集合数据类型介绍

文章目录 特点和用途常用命令插入操作查询操作删除操作 示例总结 Redis的有序集合数据类型是一种高效的数据结构&#xff0c;能够存储多个成员和对应的分值&#xff0c;并能够根据分值进行快速的查找、插入和删除操作。本文将详细介绍Redis的有序集合数据类型&#xff0c;包括其…

【PostgreSQL】函数与操作符-数学函数和操作符

PostgreSQL函数与操作符-数学函数和操作符 PostgreSQL提供了许多数学函数和操作符&#xff0c;以处理数值数据。以下是一些常用的数学函数和操作符&#xff1a; PostgreSQL数学操作符 下表展示了所有可用的数学操作符。 操作符描述例子结果加2 35-减2 - 3-1*乘2 * 36/除&a…

曲面上偏移命令的查找

今天学习老王的SW绘图时&#xff0c;遇到一个命令找不到&#xff0c;查询了一会终于找到了这个命令&#xff0c;防止自己忘记&#xff0c;特此记录一下&#xff0c;这个命令就是“曲面上偏移”&#xff0c;网上好多的教程都是错误的&#xff0c;实际上这个命令没有在曲面里面&a…

MySQL(三)——函数

上期文章 MySQL&#xff08;二&#xff09;——SQL 文章目录 上期文章字符串函数数值函数日期函数流程函数总结 函数&#xff1a;一段可以直接被另一段程序调用的程序或代码 字符串函数 函数功能CONCAT(S1,S2,…Sn)字符串拼接&#xff0c;将S1,S2,…Sn拼接成一个字符串LOWER…

js原型和new过程

在JavaScript中&#xff0c;原型和继承是实现代码复用和扩展的重要机制。而new关键字则是用来创建对象的。 原型&#xff08;Prototype&#xff09;&#xff1a; 在JavaScript中&#xff0c;每个对象都有一个原型&#xff08;prototype&#xff09;对象&#xff0c;这个原型对…

Docker查找docker组及用户

查找所有组及用户&#xff1a; cat /etc/passwd 可以查看所有用户的列表w 可以查看当前活跃的用户列表cat /etc/group 查看用户组在/etc/group 中的每条记录分四个字段&#xff1a; 第一字段&#xff1a;用户组名称&#xff1b; 第二字段&#xff1a;用户组密码&#xff1b; 第…

快速前端开发01

前端开发 1 前端开发1.快速开发网站2.浏览器能识别的标签2.1 编码&#xff08;head&#xff09;2.2 title&#xff08;head&#xff09;2.3 标题2.4 div和span2.4.5 超链接2.4.6 图片小结2.4.7 列表2.4.8 表格2.4.9 input系列&#xff08;7个&#xff09;2.4.10 下拉框2.4.11 多…

php踩坑:ajax向php提交整型值,$_POST中获取到的却是string类型的值

前端ajax提交number类型的值-1&#xff1a; $.ajax({url : theUrl,data : {data: {s: -1} // s是整数值-1},type: post,success: function(data) {console.log(data);} }php端获取到的却是string类型的"-1"&#xff1a; $data$_POST[data]; // {"s":&…

Flask 项目怎么配置并创建第一个小项目?附上完成第一个小案例截图

目录 1. 为什么要学习 flask&#xff1f; 2. flask 是什么&#xff1f; 3. flask 如何使用&#xff1f; 要安装 Flask&#xff0c;可以按照以下步骤进行&#xff1a; 4. 使用流程 4.1. 新建项目 4.1.1. 打开 pycharm&#xff0c;新建项目 4.1.2. 设置目录&#xff0c;并…

MySql前言

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f525;个人专栏&#xff1a;MySql&#x1f4d5;格言&#xff1a;那些在暗处执拗生长的花&#xff0c;终有一日会馥郁传香欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 数据库有哪些软件&#xff1f;&#xff1f; Mysql MySql数…

一道使用LinkedList和Stack解决的算法题

一、无法吃午餐的学生数量 学校的自助午餐提供圆形和方形的三明治&#xff0c;分别用数字 0 和 1 表示。所有学生站在一个队列里&#xff0c;每个学生要么喜欢圆形的要么喜欢方形的。 餐厅里三明治的数量与学生的数量相同。所有三明治都放在一个 栈 里&#xff0c;每一轮&#…

华为手表开发:WATCH 3 Pro(10)获取心率_java 华为手表获取心跳

华为手表开发:WATCH 3 Pro(10)获取心率_java 华为手表获取心跳 Excerpt 文章浏览阅读1.2k次。鸿蒙开发,获取手表心跳,按钮点击后触发的方法,我们将跳转页面的代码写在这个位置就可以实现点击按钮进行跳转页面的动作。在HTML文件“index.hml”,添加按钮,这里按钮用到是标…

14.鸿蒙HarmonyOS App(JAVA)时钟组件计时器倒计时单选按钮复选框开关switch与开关按钮ToggleButton图像组件示范

鸿蒙HarmonyOS App(JAVA) 时钟组件 计时器 倒计时 单选按钮 复选框 开关switch 开关按钮ToggleButton 图像组件 ability_main.xml <?xml version"1.0" encoding"utf-8"?> <DirectionalLayoutxmlns:ohos"http://schemas.huawei.co…

HarmonyOS4.0系列——05、状态管理之@Prop、@Link、@Provide、@Consume,以及@Watch装饰器

状态管理 看下面这张图 Components部分的装饰器为组件级别的状态管理&#xff0c;Application部分为应用的状态管理。开发者可以通过StorageLink/LocalStorageLink 实现应用和组件状态的双向同步&#xff0c;通过StorageProp/LocalStorageProp 实现应用和组件状态的单向同步。…

同一对象放入集合转换成json异常记录

1、错误格式 [{"conditions":[{"field":"name","logic":"","relationship":"EQ"}],"logic":"AND"},{"$ref":"$[0]"}] 2、产生错误原因 单个对象想产生多条数…

关于群晖ARPL界面能出现ip但是使用Synology Assistant搜索不到ip问题 及解决方法

文章引用ing304 频道文章&#xff1a;https://qun.qq.com/qqweb/qunpro/share?_wv3&_wwv128&appChannelshare&inviteCode20jx8dPsU2z&contentID1m4NKs&businessType2&from181174&shareSource5&bizka 前言 当进入该界面后 提示IP无法访问&a…

【学习心得】图解Git命令

图解Git命令的图片是在Windows操作系统中的Git Bash里操作截图。关于Git的下载安装和理论学习大家可以先看看我写的另两篇文章。链接我放在下面啦&#xff1a; 【学习心得】Git快速上手_git学习心得-CSDN博客 【学习心得】Git深入学习-CSDN博客 一、初始化仓库 命令&#xff…

eBPF运行时安全

引言 eBPF作为当前linux系统上最为炙手可热的技术&#xff0c;通常被用于网络流量过滤和分析、系统调用跟踪、性能优化、安全监控&#xff0c;当下比较知名的项目有Cilium、Falco等。 Cilium 是一个开源的容器网络和安全性项目&#xff0c;致力于提供高效的容器通信和强大的安…