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

网站开发业务介绍深圳网站搭建找哪里

网站开发业务介绍,深圳网站搭建找哪里,内蒙古做网站,注册域名dns1.相交链表 问题:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 方法:分别遍历两个链表(前后交替) # 分别遍历两个链表找…

1.相交链表

问题:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。

方法:分别遍历两个链表(前后交替)

# 分别遍历两个链表找交点
# 如果有交点,必然在某个位置相遇,因为交点及以后是重合的部分
# 如果无交点,也必然同时结束(都是遍历两个链表)
def getIntersectionNode(headA, headB):pA, pB = headA, headB# 遍历找交点while pA != pB:pA = pA.next if pA else headB   # 遍历完A,遍历BpB = pB.next if pB else headA   # 遍历完B,遍历Areturn pA                           # 交点/None

2.反转链表

问题:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

方法:画图

一定要画图!!!

# 画图!!!
class ListNode:def __init__(self, val=0, next=None):self.val = valself.next = next# 创建链表(虚拟节点)
def CreateList(nums):dummy = ListNode()p = dummyfor num in nums:p.next = ListNode(num)p = p.nextreturn dummy.next           # 返回头结点# # 创建链表(自实现)
# def CreateList(nums):
#     head = ListNode(nums[0])
#     p = head
#     for i in range(1, len(nums)):
#         p.next = ListNode(nums[i])
#         p = p.next
#     return head# 输出链表
def Print(p):while p:print(p.val)p = p.next# 反转链表(画图!!!)
def Reverse(head):pre, cur = None, headwhile cur:temp = cur.nextcur.next = prepre, cur = cur, tempreturn prehead = CreateList([1,2,3,4,5])
Print(head)
re_head = Reverse(head)
Print(re_head)

3.回文链表

方法1:原链表 == 反转链表

# 方法1:原链表 == 反转链表(注意要对原链表进行备份,链表反转之后,原链表也会跟着改变)
class ListNode:def __init__(self, val=0, next=None):self.val = valself.next = next# 创建链表
def CreateList(nums):dummy = ListNode()p = dummyfor num in nums:p.next = ListNode(num)p = p.nextreturn dummy.nextdef Print(p):while p:print(p.val)p = p.next# 链表备份
def CopyList(pA):dummy = ListNode()pB = dummywhile pA:pB.next = ListNode(pA.val)pB = pB.nextpA = pA.nextreturn dummy.next# 翻转
def Reverse(head):pre, cur = None, headwhile cur:temp = cur.nextcur.next = prepre, cur = cur, tempreturn pre# 判断回文
def IsPalind(pA, pB):while pA and pB:if pA.val != pB.val:return FalsepA, pB = pA.next, pB.nextif pA or pB:return Falsereturn Truehead = CreateList([1,2,2,1])
Print(head)
copy_head = CopyList(head)
re_head = Reverse(head)
Print(re_head)
print(IsPalind(copy_head, re_head))

方法2:转数组 + 双指针

# 方法2:转数组 + 双指针
class ListNode:def __init__(self, val=0, next=None):self.val = valself.next = next# 创建链表
def CreateList(nums):dummy = ListNode()p = dummyfor num in nums:p.next = ListNode(num)p = p.nextreturn dummy.nextdef Print(p):while p:print(p.val)p = p.next# 判断回文(链表转数组,双指针直接判断前后元素)
def IsPalind(p):# 转数组nums = []while p:nums.append(p.val)p = p.nextleft, right = 0, len(nums)-1# 判断数组回文while left < right:if nums[left] != nums[right]:return Falseleft += 1right -= 1return Truehead = CreateList([1,2,2,1])
Print(head)
print(IsPalind(head))

方法3:快慢指针 + 反转

# 方法3:快慢指针 + 反转
class ListNode:def __init__(self, val=0, next=None):self.val = valself.next = next# 创建链表
def CreateList(nums):dummy = ListNode()p = dummyfor num in nums:p.next = ListNode(num)p = p.nextreturn dummy.nextdef Print(p):while p:print(p.val)p = p.next# 翻转
def Reverse(head):pre, cur = None, headwhile cur:temp = cur.nextcur.next = prepre, cur = cur, tempreturn pre# 判断回文(快慢指针 + 反转)
def IsPalind(head):slow, fast = head, head        # 快慢指针(定位)while fast and fast.next:slow, fast = slow.next, fast.next.next# 反转(后半部分)re_slow = Reverse(slow)# 比较前后部分while re_slow:if head.val != re_slow.val:return Falsehead, re_slow = head.next, re_slow.nextreturn Truehead = CreateList([1,2,2,1])
# Print(head)
print(IsPalind(head))

http://www.dtcms.com/a/489966.html

相关文章:

  • 常见的网站模板类型有哪些,新手该如何选择最合适的?
  • 【Linux】基础IO(一)Linux 文件操作从入门到实践:系统调用、文件描述符、重定向,为自定义Shell添加重定向
  • Docker 深度解析:从虚拟化到新一代应用构建、运行与交付
  • 企业网站建设网站有哪些建企业网站用什么源码
  • 复制了一个vue的项目然后再这个基础上修改。可是通过npm run dev运行之前的老项目,发现运行的竟然是拷贝后的项目。为什么会这样?
  • 【Prisma】Prisma 命令大全(Node / NestJS 通用)
  • 十月连环效应:宏观叙事与链上机会的临界点
  • 第六部分:VTK进阶(第161章 多渲染Pass组合)
  • 三相变流器矢量控制及参数设计系列(2):PWM原理
  • 网络层IP协议详解:互联网的灵魂所在
  • 深圳网站公司推广平台wordpress网站统计
  • 数据结构4:线性表3-链式存储的线性表
  • 如何理解随机过程中“样本空间”的概念
  • 最新机器人顶会IROS 2025的award paper 深入分析
  • 做一个介绍网站多少钱手机上怎么制作网站
  • 汽车存储技术的未来在何方?
  • 医院网站加快建设品牌设计工作室
  • 学校网站开发企业中征码查询入口
  • 睢宁做网站苏州建站公司哪个济南兴田德润实惠吗
  • 成都专业网站排名推广网站建设怎么找客源?
  • 龙岗网站优化网站备案 材料
  • 建设一个个人小说网站百度联盟网站备案信息
  • 购物网站创业时是如何做宣传的去国外做赌钱网站
  • 网站制作的文章不同类型网站比较及网站域名设计
  • 网站开发进入腾信职位保定网站建设费用
  • 李江seoseo软件工具箱
  • 律师网站建设导航网站的广告怎么做的
  • 北京移动网站建设公司平面设计需要用到的软件
  • 互联网营销型网站网站开发职业生涯规划范文
  • 关于单位建设网站的申请怎样做网站别人能访问