当前位置: 首页 > 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 

 

相关文章:

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

题目描述&#xff1a; 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为 回文链表 。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true示例 2&#xff1a; …...

深入理解 Unix Shell 管道 Pipes:基础和高级用法 xargs tee awk sed等(中英双语)

深入理解 Unix Shell 管道&#xff08;|&#xff09; 1. 什么是管道&#xff08;Pipe&#xff09;&#xff1f; 管道&#xff08;|&#xff09;是 Unix/Linux Shell 中最强大的功能之一&#xff0c;它允许将一个命令的输出作为另一个命令的输入&#xff0c;从而实现数据流的处…...

[MySQL]事务的理论、属性与常见操作

目录 一、事物的理论 1.什么是事务 2.事务的属性&#xff08;ACID&#xff09; 3.再谈事务的本质 4.为什么要有事务 二、事务的操作 1.事务的支持版本 2.事务的提交模式 介绍 自动提交模式 手动提交模式 3.事务的操作 4.事务的操作演示 验证事务的回滚 事务异常…...

RS485接口EMC

A.滤波设计要点 L1为共模电感&#xff0c;共模电感能够衰减共模干扰&#xff0c;对单板内部的干扰以及外部的干扰都能抑制&#xff0c;能提高产品的抗干扰能力&#xff0c;同时也能减小通过485信号线对外的辐射&#xff0c;共模电感阻抗选择范围为120Ω/100MHz ~2200Ω/100MHz…...

快速上手mybatis教程

基础知识 MyBatis 是一款优秀的持久层框架&#xff0c;其核心组件主要包括以下部分&#xff1a; SqlSession 作用&#xff1a;SqlSession 是 MyBatis 的核心接口&#xff0c;负责与数据库进行通信&#xff0c;执行 SQL 语句&#xff0c;并返回查询结果。它是 MyBatis 的一次会…...

本地部署DeepSeek-R1保姆级教程

近期&#xff0c;我国一款开源模型 DeepSeek-R1以低成本和高性能震撼了全球科技界。该模型的开源性使开发者能够在本地环境中部署和运行&#xff0c;提供了更高的灵活性和控制力。如果你也想在本地部署 DeepSeek-R1&#xff0c;可以参考以下完整的教程&#xff0c;涵盖Mac 版本…...

blender 相机参数

目录 设置相机参数&#xff1a; 3. 设置相机参数示例 4. 相机透视与正交 5. 额外的高级设置 设置相机参数&#xff1a; 设置渲染器&#xff1a; 外参转换函数 转换测试代码&#xff1a; 获取blender渲染外参&#xff1a; 设置相机参数&#xff1a; 3. 设置相机参数示…...

在GPIO控制器中,配置通用输入,读取IO口电平时,上拉和下拉起到什么作用

上下拉电阻作用 在通用输入的时候&#xff0c;也就是在读某个IO的电平的时候 一定要让IO口先保持一个电平状态&#xff0c;这样才能检测到不同电平状态。 如何保持电平状态&#xff1f; 1. 可以通过芯片内部的上下拉电阻&#xff0c;由于是弱上下拉一般不用 2. 硬件外界一个…...

Maven工程核心概念GAVP详解:从命名规范到项目协作的基石

Maven工程核心概念GAVP详解&#xff1a;从命名规范到项目协作的基石 一、GAVP是什么&#xff1f; 在Maven工程中&#xff0c;GAVP是四个核心属性的缩写&#xff1a;GroupId、ArtifactId、Version、Packaging。这组属性为项目在Maven仓库中提供了唯一标识&#xff0c;类似于“项…...

如何利用DeepSeek打造医疗领域专属AI助手?从微调到部署全流程解析

如何利用DeepSeek开源模型打造医疗领域专属AI助手&#xff1f;从微调到部署全流程解析 医疗人工智能正迎来爆发式增长&#xff0c;但在实际应用中&#xff0c;通用大模型往往存在医学知识不精准、诊断逻辑不严谨等问题。本文将手把手带您实现医疗垂直领域大模型的定制化训练&a…...

Redis|前言

文章目录 什么是 Redis&#xff1f;Redis 主流功能与应用 什么是 Redis&#xff1f; Redis&#xff0c;Remote Dictionary Server&#xff08;远程字典服务器&#xff09;。Redis 是完全开源的&#xff0c;使用 ANSIC 语言编写&#xff0c;遵守 BSD 协议&#xff0c;是一个高性…...

眼见着折叠手机面临崩溃,三星计划增强抗摔能力挽救它

据悉折叠手机开创者三星披露了一份专利&#xff0c;通过在折叠手机屏幕上增加一个抗冲击和遮光层的方式来增强折叠手机的抗摔能力&#xff0c;希望通过这种方式进一步增强折叠手机的可靠性和耐用性&#xff0c;来促进折叠手机的发展。 据悉三星和研发可折叠玻璃的企业的做法是在…...

Leetcode面试高频题分类刷题总结

https://zhuanlan.zhihu.com/p/349940945 以下8个门类是面试中最常考的算法与数据结构知识点。 排序类&#xff08;Sort&#xff09;&#xff1a; 基础知识&#xff1a;快速排序&#xff08;Quick Sort&#xff09;&#xff0c; 归并排序&#xff08;Merge Sort&#xff09;的…...

Vue.js `v-memo` 性能优化技巧

Vue.js v-memo 性能优化技巧 今天我们来聊聊 Vue 3.2 引入的一个性能优化指令&#xff1a;v-memo。如果你在处理大型列表或复杂组件时&#xff0c;遇到性能瓶颈&#xff0c;那么 v-memo 可能会成为你的得力助手。 什么是 v-memo&#xff1f; v-memo 是 Vue 3.2 新增的内置指…...

Altium Designer绘制原理图时画斜线的方法

第一步&#xff1a;检查设置是否正确 打开preferences->PCB Editor ->Interactive Routing->Interactive Routing Options->Restrict TO 90/45去掉勾选项&#xff0c;点击OK即可。如下图所示&#xff1a; 然后在划线时&#xff0c;按下shift空格就能够切换划线…...

在K8S中,有哪几种控制器类型?

在Kubernetes中&#xff0c;控制器&#xff08;Controller&#xff09;是用来确保实际集群状态与所需状态保持一致的关键组件。它们监控并自动调整系统以达到预期状态&#xff0c;以下是Kubernetes中主要的几种控制器类型&#xff1a; ReplicationController&#xff08;RC&am…...

什么是Rust?它有什么特点?为什么要学习Rust?

什么是Rust&#xff1f;它有什么特点&#xff1f;为什么要学习Rust&#xff1f; 如果你是一名编程初学者&#xff0c;或者已经有一些编程经验但对Rust感兴趣&#xff0c;那么这篇文章就是为你准备的&#xff01;我们将用简单易懂的语言&#xff0c;带你了解Rust是什么、它有什…...

Golang 并发机制-3:通道(channels)机制详解

并发编程是一种创建性能优化且响应迅速的软件的强大方法。Golang&#xff08;也称为 Go&#xff09;通过通道&#xff08;channels&#xff09;这一特性&#xff0c;能够可靠且优雅地实现并发通信。本文将揭示通道的概念&#xff0c;解释其在并发编程中的作用&#xff0c;并提供…...

kamailio的kamctl的使用

kamctl 是 Kamailio SIP 服务器的管理工具&#xff0c;用于执行各种管理任务&#xff0c;如启动、停止、重启 Kamailio 进程&#xff0c;管理用户、ACL、路由、信任的 IP 地址等。以下是对 kamctl 命令的解释及举例说明&#xff1a; 1. 启动、停止、重启 Kamailio start: 启动…...

HarmonyOS:ArkWeb进程

ArkWeb是多进程模型,分为应用进程、Web渲染进程、Web GPU进程、Web孵化进程和Foundation进程。 说明 Web内核没有明确的内存大小申请约束,理论上可以无限大,直到被资源管理释放。 ArkWeb进程模型图 应用进程中Web相关线程(应用唯一) 应用进程为主进程。包含网络线程、Vi…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...

C# winform教程(二)----checkbox

一、作用 提供一个用户选择或者不选的状态&#xff0c;这是一个可以多选的控件。 二、属性 其实功能大差不差&#xff0c;除了特殊的几个外&#xff0c;与button基本相同&#xff0c;所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...