leetcood学习笔记-160*-相交链表
2024-09-03 12:40:09
题目描述:
方法一:
class Solution(object):
def getIntersectionNode(self, headA, headB):
"""
:type head1, head1: ListNode
:rtype: ListNode
"""
a,b = headA,headB
a_num,b_num = 0,0
while a:
a = a.next
a_num += 1
while b:
b = b.next
b_num += 1
if a_num >= b_num:
gap = a_num - b_num
while gap:
headA = headA.next
gap -= 1
while headA and headB:
if headA == headB:
return headA
headA = headA.next
headB = headB.next
return
else:
gap = b_num - a_num
while gap:
headB = headB.next
gap -=1
while headA and headB:
if headA == headB:
return headA
headA = headA.next
headB = headB.next
return
优化后:
class Solution(object):
def getIntersectionNode(self, headA, headB):
"""
:type head1, head1: ListNode
:rtype: ListNode
"""
a,b = 0,0
p,q = headA,headB
while headA and headB:
headA,headB = headA.next,headB.next
a,b = a+1,b+1
while headA:
headA,p = headA.next,p.next
while headB:
headB,q = headB.next,q.next
while p:
if p==q:
return p
p,q = p.next,q.next return
方法二;指针追逐*
class Solution(object):
def getIntersectionNode(self, headA, headB):
"""
:type head1, head1: ListNode
:rtype: ListNode
"""
if not headA or not headB:
return
p,q = headA,headB
while p!=q:
p = p.next if p else headB
q = q.next if q else headA
return p
最新文章
- Remove-Azureaccount (Can't get Azure credentials to stick in Powershel)
- 多表数据连接 Left join
- LoadRunner常见函数分析
- pandas 前后行操作
- JavaScript初级教程(Jquery)
- iOS5中UIViewController的新方法
- ios 将Log日志重定向输出到文件中保存
- hdu 1541 Stars(树状数组)
- ubuntu下修改ip重启系统ip不变
- TFS统计编码行数语句
- JavaScript:Object.prototype.toString方法的原理
- 网络编程中几个地址结构与转换(in_addr,sockaddr,sockaddr_in,pcap_addr)
- MyEclipse开发的java web项目在 Eclipse中无法识别
- Parrot源代码分析之海贼王
- 用Qt开发Web和本地混合的应用
- iOS进阶之UDP代理鉴权过程
- C#设计模式之10:状态模式
- 1.7Oob 静态变量静态方法
- java 安装环境
- Linux命令——压缩和解压缩