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

湖北省建设教育协会网站词爱站的关键词

湖北省建设教育协会网站,词爱站的关键词,品牌推广软文200字,网站建设 公司 广州题目 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 代码 方法一: 将链表值复制到数组中,在数组中判断是否是回文列表 # Definition for singl…

题目

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。
在这里插入图片描述

代码

方法一:

将链表值复制到数组中,在数组中判断是否是回文列表

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def isPalindrome(self, head: Optional[ListNode]) -> bool:cur_node=headhead_list=[]while cur_node:head_list.append(cur_node.val)cur_node=cur_node.nextn=len(head_list)i,j=0,n-1while i<j:if head_list[i]==head_list[j]:i+=1j-=1else:return Falsereturn True

方法二:递归

利用递归回溯过程与从前往后遍历的节点的值进行比较

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def isPalindrome(self, head: Optional[ListNode]) -> bool:self.front=headdef recursively_check(current_node=head):if current_node:if not recursively_check(current_node.next):#递归到最后一个节点,开始回溯return False # 回溯的过程中出现一次False就结束代码if self.front.val != current_node.val:#以下就是回溯时的内容return Falseself.front=self.front.nextreturn Truereturn recursively_check()

方法三:

这个方法的重点就是将这段链表的前后两个部分分开,并翻转后半部分,进行比较

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def isPalindrome(self, head: Optional[ListNode]) -> bool:first_half_end = self.end_of_first_half(head)second_half_start = self.reverse_list(first_half_end.next)result=True first_position = headsecond_position = second_half_startwhile result and second_position:if first_position.val!=second_position.val:result=Falsefirst_position=first_position.nextsecond_position=second_position.nextfirst_half_end.next=self.reverse_list(second_half_start)return resultdef end_of_first_half(self,head):fast=headslow=headwhile fast.next and fast.next.next:# 确保快指没有针到最后一个节点,并且快指针能够移动两步# 这段代码奇数长度链表:slow 指向正中间的节点。偶数长度链表:slow 指向前半部分的最后一个节点fast=fast.next.nextslow=slow.nextreturn slowdef reverse_list(self,head):prev=Nonecurrent=headwhile current:next_node = current.nextcurrent.next=prevprev=currentcurrent=next_nodereturn prev
http://www.dtcms.com/a/471371.html

相关文章:

  • 【笔记】kill -9的用法
  • 广州省建设监理协会网站加强公司内部网站建设
  • fpga开发板ZYNQ 璞致 PZ7010/7020 邮票孔核心板简介-ZYNQ7000系列小系统学习板
  • Knife4j文档报Knife4j文档请求异常
  • 合肥 做网站的个人网页设计ps
  • 如何通过采购管理系统优化企业采购流程?
  • Week 20: 深度学习补遗:Transformer Decoder架构
  • asp新闻发布网站模板定制物品的app有哪些
  • 小区的名字建设单位去什么网站备案网站建设结构图下载
  • 网站开发一般多少钱辽宁建设工程信息网官网新网站是哪个
  • 【每天一个知识点】[特殊字符] 3D打印技术概述
  • 广安网站建设哪家好建筑木模板厂家
  • 【SpringBoot从初学者到专家的成长08】SpringBoot数据库驱动介绍配置方法和代码
  • 天津建设网站c2成绩查询深圳广告制作厂家
  • Ubuntu 磁盘 I/O 监控完全指南
  • wordpress完美迁站教程代理网络工具
  • XR + 文旅:虚实共生,重塑时空,XR技术如何开启文旅产业的新纪元
  • 为网站做一则广告dedecms网站地图模板怎么
  • 前端常用框架及优缺点
  • 使用php做的网站mvc net跳转到另一网站
  • TCP/MQTT简单介绍
  • wordpress加载单页面内容seo如何去做优化
  • 网站建设制作公司都选万维科技做SEO用dede还是wordpress
  • 中山做网站优化赣州网上房地产官网
  • 庐江网站制作手机自媒体网站模板
  • 建网页网站广东推广网络
  • 黑龙江建设集团网站阿里云 cdn wordpress
  • csdn| MySQL
  • 用shopify 做网站空白的网站怎么建设
  • 在直播网站做前端注意营销型网站建设设计服务