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

一天两道力扣(1)

解法1:

class Solution(object):def getIntersectionNode(self, headA, headB):A, B = headA, headBwhile(A != B):A = A.next if A else headBB = B.next if B else headA return A

解析:简单来说就是两个人同时走路,相遇的点就是交叉点,因为相遇了就说明路程一样,两次循环找到交叉点。

解法2:

class Solution(object):def getIntersectionNode(self, headA, headB):s = set()p, q = headA, headBwhile p:s.add(p)p = p.nextwhile q:if q in s:return qq = q.nextreturn None

解析:先将链表A放在哈希表里面,然后遍历B将其逐个与哈希表对比。

解法3:

class Solution(object):def getIntersectionNode(self, headA, headB):s1, s2 = [], []p, q = headA, headBwhile p:s1.append(p)p = p.nextwhile q:s2.append(q)q = q.nextans = Nonei, j = len(s1) - 1, len(s2) - 1while i >= 0 and j >= 0 and s1[i] == s2[j]:ans = s1[i]i, j = i - 1, j - 1return ans

解析:用栈先进后出的思想,倒着对比,直到找到不一样的地方。

 解法4:

class Solution(object):def getIntersectionNode(self, headA, headB):s1, s2 = 0, 0p, q = headA, headBwhile p:p = p.nexts1 += 1while q:q = q.nexts2 += 1p, q = headA, headBfor i in range(s1 - s2):p = p.nextfor i in range(s2 - s1):q = q.nextwhile p and q and p != q:p = p.nextq = q.nextreturn p

解析:谁长谁先遍历。先遍历到相同长度,然后直接对比就好了。

class Solution(object):def lowestCommonAncestor(self, root, p, q):if not root or root == p or root == q: return rootleft = self.lowestCommonAncestor(root.left, p, q)right = self.lowestCommonAncestor(root.right, p, q)if not left and not right: returnif not right: return leftif not left: return rightreturn root

 

http://www.xdnf.cn/news/14964.html

相关文章:

  • 高效打字辅助工具,解决符号输入难题
  • 使用pdf box去水印
  • Part 0:射影几何,变换与估计-第三章:3D射影几何与变换
  • 分享|大数据分析师职业技术证书报考指南
  • 推荐系统中如果有一个上古精排模型,后续如何优化?
  • 遇到该问题:kex_exchange_identification: read: Connection reset`的解决办法
  • github在线图床
  • PostgreSQL中的rank()窗口函数:实用指南与示例
  • 浏览器原生控件上传PDF导致hash值不同
  • 制作一款打飞机游戏76:分数显示
  • 微软广告推出新的精细资产级别审核
  • 无代码自动化测试工具介绍
  • SpringBoot控制反转
  • CentOS 6操作系统安装
  • 05.SpringBoot拦截器的使用详解
  • 玄机——某学校系统中挖矿病毒应急排查
  • 人脸活体识别3:C/C++实现人脸眨眼 张嘴 点头 摇头识别(可实时检测)
  • lerobot 工程笔记(一)——使用smolvla控制so101
  • 【AI落地应用实战】AIGC赋能职场PPT汇报:从效率工具到辅助优化
  • Docker Compose 基础——AI教你学Docker
  • 链表的实现
  • Flink-1.19.0源码详解5-JobGraph生成-前篇
  • Node.js-http模块
  • Appium 简介
  • 大语言模型:是逐字生成还是一次多词?
  • GO Web 框架 Gin 完全解析与实践
  • 【NLP第二期中文分词技术:规则、统计与混合方法全解】
  • 笨方法学python-习题12
  • Disruptor架构哲学
  • 结构体实战:用Rust编写矩形面积计算器