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

【面试必刷TOP101】删除链表的倒数第n个节点 两个链表的第一个公共结点

目录

题目:删除链表的倒数第n个节点_牛客题霸_牛客网 (nowcoder.com)

题目的接口:

解题思路:

代码:

过啦!!!

题目:两个链表的第一个公共结点_牛客题霸_牛客网 (nowcoder.com)

题目的接口:

解题思路:

代码:

过啦!!!

写在最后:


题目:删除链表的倒数第n个节点_牛客题霸_牛客网 (nowcoder.com)

题目的接口:

package main
import . "nc_tools"
/** type ListNode struct{*   Val int*   Next *ListNode* }*//*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param head ListNode类 * @param n int整型 * @return ListNode类
*/
func removeNthFromEnd( head *ListNode ,  n int ) *ListNode {// write code here
}

解题思路:

这道题的解题思路其实和上一题找出倒数后 k 个节点的思路是一样的,首先就是用快慢指针把 k 的位置找到,这里需要删除这个位置的节点,那咱们只需要把它的前一个节点找到就行,

所以只需要设置一个 prev 节点作为他的上一个节点就搞定了,代码如下:

代码:

package main
import . "nc_tools"
/** type ListNode struct{*   Val int*   Next *ListNode* }*//*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param head ListNode类 * @param n int整型 * @return ListNode类
*/
func removeNthFromEnd( head *ListNode ,  n int ) *ListNode {fast := headslow := headprev := headfor i := 0; i < n; i++ {fast = fast.Next}for fast != nil {slow = slow.Nextfast = fast.Next}if prev == slow {return slow.Next} else {for prev.Next != slow {prev = prev.Next}prev.Next = slow.Next}return head
}

过啦!!!

题目:两个链表的第一个公共结点_牛客题霸_牛客网 (nowcoder.com)

题目的接口:

package main
import . "nc_tools"
/** type ListNode struct{*   Val int*   Next *ListNode* }*//*** * @param pHead1 ListNode类 * @param pHead2 ListNode类 * @return ListNode类
*/
func FindFirstCommonNode( pHead1 *ListNode ,  pHead2 *ListNode ) *ListNode {// write code here
}

解题思路:

这道题目也有个很巧妙的解法,怎么找到相交链表他们相交的地方呢?只要他们把自己和对方的路都走一遍,这样他们走的路程就是一样的,这样他们相交的地方就是链表的交汇点了~

代码:

package main
import . "nc_tools"
/** type ListNode struct{*   Val int*   Next *ListNode* }*//*** * @param pHead1 ListNode类 * @param pHead2 ListNode类 * @return ListNode类
*/
func FindFirstCommonNode( pHead1 *ListNode ,  pHead2 *ListNode ) *ListNode {l1 := pHead1l2 := pHead2for l1 != l2 {if l1 == nil {l1 = pHead2} else {l1 = l1.Next}if l2 == nil {l2 = pHead1} else {l2 = l2.Next}}return l1
}

过啦!!!

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

http://www.lryc.cn/news/170123.html

相关文章:

  • 手刻 Deep Learning -第壹章 -PyTorch教学-激励函数与感知机入门(上)
  • 物理内存分配
  • RFID产线自动化升级改造管理方案
  • 全量数据采集:不同网站的方法与挑战
  • Redis——渐进式遍历和数据库管理命令
  • 如何打造可视化警务巡防通信解决方案
  • ATF(TF-A) SPMC威胁模型-安全检测与评估
  • BIO AIO NIO 的区别
  • 大数据学习1.1-Centos8网络配置
  • 在Android studio 创建Flutter项目运行出现问题总结
  • Ceph入门到精通-ceph对于长文件名如何处理
  • vue+element-ui 项目实战示例详解【目录】
  • 性能测试-性能调优主要方向和原则(15)
  • 关于taos数据库使用过程中突发“unable to establish connection”问题解决
  • 【Qt】Qt中将字符串转换为数字类型的函数总结以及用法示例
  • 效率工具3-计算机网络工具
  • 2万多条汉字笔画笔顺查询ACCESS\EXCEL数据库
  • 我的一周年创作纪念日,感谢有你们
  • 【音视频】ffplay源码解析-PacketQueue队列
  • C++ 霍夫变换圆形检测
  • ​南阳师范学院图书馆藏《​乡村振兴战略下传统村落文化旅游设计》许少辉八一新著——2023学生开学季辉少许
  • 如何将你在树莓派上部署的 IoT 物联网 MQTT 服务发布到公网?
  • 系统架构设计师(第二版)学习笔记----软件工程
  • C与C++字符串分割方法示例汇总
  • HTTP代理与VPN:网络代理技术的比较
  • 免费低代码平台,助企业高效管理任务
  • 基于conda的相关命令
  • 【微信小程序】swiper的使用
  • iText实战--PDF和iText 简介
  • 「大数据-0.1」虚拟机VMware安装、配置、使用、创建大数据集群教程