题目

请判断一个链表是否为回文链表。

示例 1:

输入: 1->2
输出: false

示例 2:

输入: 1->2->2->1
输出: true

进阶:

你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?

解答

两种方法:

  • 遍历链表,用数组存值,再比较。时间复杂度O(n),空间复杂度O(n)
  • 指针法:找到中点,反转中点之后的链表,再比较。时间复杂度O(n),空间复杂度O(1)

通过代码如下:

# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
from math import * class Solution:
# # 改为数组:时间复杂度O(n),空间复杂度O(n)
# def isPalindrome(self, head: ListNode) -> bool:
# l = []
# while head:
# l.append(head.val)
# head = head.next
# return l == l[::-1] # 指针法:时间复杂度O(n),空间复杂度O(1)。找到中点,反转中点之后的链表,再比较
def isPalindrome(self, head: ListNode) -> bool:
if not head or not head.next:
return True
# 找到中点,快指针走的路程是慢的两倍,快指针结束慢指针刚好在中间
f = s = head
while f:
s = s.next
f = f.next.next if f.next else f.next # 反转中点之后的链表,1->2->0->2->1 ————》 1->2->0<-2<-1
c, p = s, None
while c:
n = c.next
c.next = p
p = c
c = n # 相对比较
while p:
if head.val != p.val:
return False
head = head.next
p = p.next
return True

【Leetcode链表】回文链表(234)的更多相关文章

  1. 领扣(LeetCode)回文链表 个人题解

    请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶:你能否用 O(n) 时间复杂 ...

  2. Leetcode:234 回文链表

    leetcode:234 回文链表 关键点:请判断一个链表是否为回文链表.示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true. ...

  3. [LeetCode] 234. Palindrome Linked List 回文链表

    Given a singly linked list, determine if it is a palindrome. Example 1: Input: 1->2 Output: false ...

  4. Leetcode 234. 回文链表(进阶)

    1.题目描述 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否用 O ...

  5. LeetCode 234:回文链表 Palindrome Linked List

    ​ 请判断一个链表是否为回文链表. Given a singly linked list, determine if it is a palindrome. 示例 1: 输入: 1->2 输出: ...

  6. Java实现 LeetCode 234 回文链表

    234. 回文链表 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否 ...

  7. LeetCode 234——回文链表

    1. 题目 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否用 O( ...

  8. [LeetCode] 234. 回文链表 ☆(翻转链表)

    描述 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2输出: false示例 2: 输入: 1->2->2->1输出: true 进阶:你能否用 O(n) 时间复杂 ...

  9. leetcode题目234.回文链表(快慢指针+辅助空间-简单)

    题目描述: 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否用 O( ...

随机推荐

  1. PHP CURL header 设置HOST主机头进行访问并 POST提交數據

    $host = array("Host: act.qzone.qq.com");// 域名不帶http://$data = array(            'aa' => ...

  2. openCV抠图实验

    #include "pch.h" #include <opencv2/core/core.hpp> #include "opencv2/imgproc/img ...

  3. windows console 控制台自启动

    var fileName = Assembly.GetExecutingAssembly().Location; System.Diagnostics.Process.Start(fileName);

  4. laravel--request类获取传值

    request类获取传值 Request类的方法很多,常用的有如下几个: Request -> all() : 表示一次性获取所有的传值(包括get和post,但不能获取参数) Request ...

  5. js中的定义变量之①用不用var

    var 是js定义变量的意思. 由于js中的变量是弱类型的,因此js中的所有变量包括number(数字型).string(字符串类型).boolean(布尔类型,true和false)等均通过var关 ...

  6. 微信小程序之threejs全景

    最近在开发小程序,身心疲惫,原因是功能和app相同,我裂开了. 各种封装组件,各种写页面,不过有个好处是以前写的h5拿来改一下标签,基本上还是ok的,就剩下最后几个功能,其中就有一个VR全景功能. 移 ...

  7. JAVA获取磁盘空间

    需要把磁盘空间显示在页面上,这样就不用去服务器查看了,方便 两个办法 File file = new File("D:"); long totalSpace = file.getT ...

  8. jnhs-springmvc 请求组合不正确,比如请求路径出现两次

    初学springmvc 向后台传参数,结果发现,一直404 404后没有路径,说明 没有进入controller 仔细一看,请求路径不对,重复出现 页面是这样写的 页面是这样写的 原因是,请求链接和当 ...

  9. Jboss 默认加载项目访问

    修改JBOSS的server.xml路径为: D:\Program Files\jboss-4.2.2.GA\server\default\deploy\jboss-web.deployer\serv ...

  10. MySQL数据库起步 linux安装(更新中...)

    卸载mysql! [root@localhost usr]# yum remove mysql mysql-server mysql-libs compat-mysql51 [root@localho ...