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

算法训练第四天

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

思路:

这个感觉是个模拟类的题目,只要对链表的数据结构熟悉就能做出来

代码:

class Solution(object):def swapPairs(self, head):""":type head: Optional[ListNode]:rtype: Optional[ListNode]"""if head is None:return headnew_head = ListNode(next=head)pos = new_headwhile pos.next:a = pos.nextb = pos.next.nextif b is None:breaka.next = b.nextb.next = apos.next = bpos = areturn new_head.next

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

思路:

这里我选择的算法是统计链表的长度len,然后删除索引为len-n的节点即可。

代码:

class Solution(object):def removeNthFromEnd(self, head, n):""":type head: Optional[ListNode]:type n: int:rtype: Optional[ListNode]"""length = 0pos = headwhile pos :length+=1pos = pos.nextdelet_pos = length-nnew_head = ListNode(next=head)pos = new_headi = 0while i<delet_pos:pos = pos.nexti+=1pos.next = pos.next.nextreturn new_head.next

160.链表相交

思路:

这道题本来打算用两个while循环去暴力搜索的,但是提交的时候超时了,于是改变策略,因为两个链表相交是在后面部分,因此我们只需要获知两个链表的长度,给短的链表在前面补齐长度,然后一起遍历链表,找出相同位置即可。

代码:

class Solution(object):def getIntersectionNode(self, headA, headB):""":type head1, head1: ListNode:rtype: ListNode"""# 统计两个链表的长度A_len = 0B_len = 0pos = headA while pos !=None:A_len+=1pos = pos.nextpos = headBwhile pos !=None:B_len+=1pos = pos.next# 在短的链表前面补齐while A_len<B_len:new_node = ListNode(0)new_node.next = headAheadA = new_nodeA_len+=1while B_len<A_len:new_node = ListNode(0)new_node.next = headBheadB = new_nodeB_len+=1# 从头遍历两个链表i = headAj = headBwhile i!=None and j!=None:if i==j:return ii = i.nextj = j.next

142.环形链表II

思路:

这道题其实使用python去解很容易实现,只需开一个list记录遍历过的节点,然后每遍历一个节点用in去判断是否在list中,如果在,就把该节点返回即可。

代码:

class Solution(object):def detectCycle(self, head):""":type head: ListNode:rtype: ListNode"""arr = []pos = headwhile pos not in arr and pos:arr.append(pos)pos = pos.nextreturn pos
http://www.xdnf.cn/news/10311.html

相关文章:

  • 企业上线ESOP(电子标准操作程序)电子作业指导书,实现车间无纸化,是数字化转型的重要一步
  • ZC-OFDM雷达通信一体化减小PAPR——部分传输序列法(PTS)
  • 利用python工具you-get下载网页的视频文件
  • 学习笔记:3个学习AI路上反复看到的概念:RAG,Langchain,Agent
  • MySql(十)
  • 字符串~~~
  • 【Python训练营打卡】day40 @浙大疏锦行
  • 前端学习(7)—— HTML + CSS实现博客系统页面
  • python魔法函数
  • 《操作系统真相还原》——初探保护模式
  • 使用curlconverter网站快速生成requests请求包
  • 【Docker 新手入门指南】第十五章:常见故障排除
  • pytest 常见问题解答 (FAQ)
  • 头歌java课程实验(学习-Java字符串之正则表达式之元字符之判断字符串是否符合规则)
  • 每日c/c++题 备战蓝桥杯(P1204 [USACO1.2] 挤牛奶 Milking Cows)
  • [蓝桥杯]分考场
  • 【11408学习记录】考研英语写作提分秘籍:2013真题邀请信精讲+万能模板套用技巧
  • 1-Wire 一线式总线:从原理到实战,玩转 DS18B20 温度采集
  • AE已禁用刷新请释放Caps Lock
  • Redis事务详解:原理、使用与注意事项
  • RabbitMQ 高级特性
  • Python打卡训练营Day41
  • C 语言开发中常见的开发环境
  • python打卡day41@浙大疏锦行
  • 【愚公系列】《生产线数字化设计与仿真》006-颜色分类站仿真(配置颜色分类站的气缸和传送带)
  • YOLO系列中的C3模块解析2025.5.31
  • 《重新定义高效微调:QLoRA 4位量化的颠覆式创新解析》
  • 数字化转型进阶:精读41页华为数字化转型实践【附全文阅读】
  • 在Spring Boot中集成Redis进行缓存
  • 赛博算命之“帝王之术”——奇门遁甲的JAVA实现