当前位置: 首页 > 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.zskr.cn/news/9229.html

相关文章:

  • 完整教程:【前端面试题✨】Vue篇(一)
  • 算法随笔(一) - 实践
  • 学python的第7天
  • Revit二次开发环境配置
  • CF1016G Appropriate Team
  • 深入解析:STM32-FreeRTOS操作系统-任务管理
  • 202508_浙江省网络安全测试职业职工技能竞赛_misc-1
  • 广二联考题解补全计划:
  • 如何在 C# 中将文本转换为 Word 以及将 Word 转换为文本 - 教程
  • Chapter 8 Contour / Shape Detection
  • 【左程云算法笔记016】双端队列-双链表和固定数组实现 - 教程
  • 2025年运营商API安全建设最佳实践:某头部省级电信案例解析与方案推荐
  • 面向对象入门2与类的识别
  • 板子大全
  • 通过人大金仓数据库的逻辑备份与还原功能实现数据迁移
  • 完整教程:GS1-128(EAN-128)编码构造方式
  • 第十二节:订单普通下单、支付回调、退款、退款回调详解
  • Chapter 7 Color Detection
  • PyQt数字转大写金额GUI程序开发及财务规范实现
  • 从零开始训练推理模型:GRPO+Unsloth改造Qwen实战指南
  • 爱锋拍照工具 - 隐私政策
  • 周计划+总结
  • C#通讯之网络通讯 TCP UDP - 详解
  • 第03周 面向对象入门2与类的识别
  • 完整教程:启用GPU对模型进行推理,安装cuda toolkit cuDNN 9
  • 25秋周总结3
  • 不会的好题总结
  • 详细介绍:体验感满满—万物皆可插入
  • 支付宝的对账单下载
  • ABC 424 D-F 题解