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

代码随想录算法训练营第四天 |24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II

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

思路:一次移动两个单位,然后交换两个节点,感觉不难。

注意的点:注意交换节点时候的顺序。

/*** Definition for singly-linked list.* type ListNode struct {*     Val int*     Next *ListNode* }*/
func swapPairs(head *ListNode) *ListNode {if head == nil{return nil}dummyHead := &ListNode{Next : nil,}dummyHead.Next = headcur := dummyHeadfor cur != nil && cur.Next != nil && cur.Next.Next != nil{secound := cur.Next.Nextfirst := cur.Nextfirst.Next = secound.Nextsecound.Next = firstcur.Next = secoundcur = cur.Nextcur = cur.Next}return dummyHead.Next
}

  

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

思路:第一次遍历记录到链表size,然后用size - n 得到要移动的距离,最后进行节点操作,不难

/*** Definition for singly-linked list.* type ListNode struct {*     Val int*     Next *ListNode* }*/
func removeNthFromEnd(head *ListNode, n int) *ListNode {size := 0dummyHead := &ListNode{Val :-999,Next : head,}cur := dummyHeadfor cur!= nil && cur.Next != nil{size++cur = cur.Next}loop := size - ncur = dummyHeadfor cur!=nil && cur.Next !=nil && loop > 0 {loop--cur = cur.Next}cur.Next = cur.Next.Nextreturn dummyHead.Next
}

  

面试题 02.07. 链表相交

思路:用哈希表,记录之前的链表是否出现过,很简单。

/*** Definition for singly-linked list.* type ListNode struct {*     Val int*     Next *ListNode* }*/
func getIntersectionNode(headA, headB *ListNode) *ListNode {cur := headAhash := map[*ListNode]int{}for cur != nil {hash[cur]++cur = cur.Next}cur = headBfor cur != nil{if hash[cur] == 1{return cur}hash[cur]++cur = cur.Next}return nil
}

  

142.环形链表II

思路:用哈希表,统计节点出现的次数。

/*** Definition for singly-linked list.* type ListNode struct {*     Val int*     Next *ListNode* }*/
func detectCycle(head *ListNode) *ListNode {hash := map[*ListNode]int{}cur := headfor cur != nil {if hash[cur] == 1{return cur}hash[cur]++cur = cur.Next}return nil
}

  

http://www.jsqmd.com/news/1192/

相关文章:

  • 提高杂题
  • 【比赛记录】2025CSP-S模拟赛51
  • 完整教程:【前端面试题✨】Vue篇(一)
  • gdu 手机清理 空间占用
  • Android 源码解析 之 MediaPlayer
  • STM32初始化串口重定向后printf调试信息不输出的难题
  • 算法随笔(一) - 实践
  • some
  • 5. 二叉树
  • fastapi-langgraph
  • 第二周预习作业
  • 学python的第7天
  • Revit二次开发环境配置
  • CF1016G Appropriate Team
  • CF494C Helping People
  • 深入解析:Extract Chart Data Directly to Excel
  • AOSP Android12 Source 下载同步
  • 02020404 EF Core基础04-自增主键、Guid主键、混合自增、Hi/Lo算法、Migration深入、数据库其它迁移命令
  • 02020403 EF Core基础03-Fluent API、Data Annotation、两种配置的选择
  • 深入解析:Python(1)|| 超基础语法(格式,输入输出,变量,字符串,运算符)
  • 深入解析:STM32-FreeRTOS操作系统-任务管理
  • Java中异步任务的执行方式有几种?
  • mysql数据库自增ID为int类型超过范围
  • 202508_浙江省网络安全测试职业职工技能竞赛_misc-1
  • python爬虫测试
  • 广二联考题解补全计划:
  • 如何在 C# 中将文本转换为 Word 以及将 Word 转换为文本 - 教程
  • Chapter 8 Contour / Shape Detection
  • 【左程云算法笔记016】双端队列-双链表和固定数组实现 - 教程
  • LeetCode 几道 Promises 和 Time 的题目 - 教程