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

【hot100】刷题记录(12)-回文链表

题目描述:

给你一个单链表的头节点 head ,请你判断该链表是否为

回文链表

。如果是,返回 true ;否则,返回 false 。

 

示例 1:

 

输入:head = [1,2,2,1]
输出:true

示例 2:

 

输入:head = [1,2]
输出:false

 

提示:

  • 链表中节点数目在范围[1, 105] 内
  • 0 <= Node.val <= 9

 

我的作答:

我的思路是先复制一个一样的链表,再反转这个复制的链表,一个结点一个结点比较,碰到不一样的就return false

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):def isPalindrome(self, head):""":type head: Optional[ListNode]:rtype: bool"""if not head: return Truedef copylist(head): #复制链表dummy = ListNode(0)cur = dummywhile head:cur.next = ListNode(head.val)cur = cur.nexthead = head.nextreturn dummy.next #这个头结点真的好烦def reverse(copy_head): #反转复制的链表cur, pre = copy_head, Nonewhile cur:temp = cur.nextcur.next = prepre = curcur = tempreturn precopy_head = copylist(head)copy_head = reverse(copy_head)cur1, cur2 = head, copy_headwhile cur1 and cur2: #比较if cur1.val!=cur2.val:return Falsecur1 = cur1.nextcur2 = cur2.nextreturn True

缺点是真的很繁琐。。orz

 

参考:

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):def isPalindrome(self, head):""":type head: Optional[ListNode]:rtype: bool"""# 保证长度大于1,方便一刀两段if not head.next: return True# 遍历一遍得长度# -------------l = 0cur = headwhile cur:cur = cur.nextl += 1# ---------------# 根据长度反转前面一半的链表# -------------------------pre = Nonecur = headi = 0while l//2 != i:nxt =cur.nextcur.next = prepre = curcur = nxti += 1# -----------------------# 长度为奇数,中间的数不用比较if l % 2 == 1: cur = cur.next# 一一对照即可while cur and pre:if cur.val != pre.val:return Falsecur = cur.nextpre = pre.nextreturn True 

 

http://www.lryc.cn/news/530841.html

相关文章:

  • 深入理解 Unix Shell 管道 Pipes:基础和高级用法 xargs tee awk sed等(中英双语)
  • [MySQL]事务的理论、属性与常见操作
  • RS485接口EMC
  • 快速上手mybatis教程
  • 本地部署DeepSeek-R1保姆级教程
  • blender 相机参数
  • 在GPIO控制器中,配置通用输入,读取IO口电平时,上拉和下拉起到什么作用
  • Maven工程核心概念GAVP详解:从命名规范到项目协作的基石
  • 如何利用DeepSeek打造医疗领域专属AI助手?从微调到部署全流程解析
  • Redis|前言
  • 眼见着折叠手机面临崩溃,三星计划增强抗摔能力挽救它
  • Leetcode面试高频题分类刷题总结
  • Vue.js `v-memo` 性能优化技巧
  • Altium Designer绘制原理图时画斜线的方法
  • 在K8S中,有哪几种控制器类型?
  • 什么是Rust?它有什么特点?为什么要学习Rust?
  • Golang 并发机制-3:通道(channels)机制详解
  • kamailio的kamctl的使用
  • HarmonyOS:ArkWeb进程
  • UI线程用到COM只能选单线程模型
  • LLMs之DeepSeek:Math-To-Manim的简介(包括DeepSeek R1-Zero的详解)、安装和使用方法、案例应用之详细攻略
  • 在C语言中使用条件变量实现线程同步
  • 图书管理系统 Axios 源码__新增图书
  • Maven全解析:从基础到精通的实战指南
  • 数据密码解锁之DeepSeek 和其他 AI 大模型对比的神秘面纱
  • python算法和数据结构刷题[5]:动态规划
  • Ollama+OpenWebUI部署本地大模型
  • Python从0到100(八十六):神经网络-ShuffleNet通道混合轻量级网络的深入介绍
  • 【网络】传输层协议TCP(重点)
  • 海思ISP开发说明