前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【一天一大 lee】回文链表 (难度:简单) - Day20201023

【一天一大 lee】回文链表 (难度:简单) - Day20201023

作者头像
前端小书童
发布2020-11-03 10:13:36
发布2020-11-03 10:13:36
25400
代码可运行
举报
文章被收录于专栏:前端小书童前端小书童
运行总次数:0
代码可运行

20201023

题目:

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

示例:

  1. 示例 1:
代码语言:javascript
代码运行次数:0
运行
复制
输入: 1->2
输出: false
  1. 示例 2:
代码语言:javascript
代码运行次数:0
运行
复制
输入: 1->2->2->1
输出: true

抛砖引玉

思路:

将链表节点存放到数组中,然后判断数组是否为回文数组:

  • 声明两个指针分别从首尾递增递减判断是否相同

抛砖引玉

代码语言:javascript
代码运行次数:0
运行
复制
/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @return {boolean}
 */
var isPalindrome = function(head) {
  // 不足两个节点之间返回true
  if (head === null || head.next === null) return true

  let arr = [],
    end = 0,
    start = 0
  // 将链表节点存放到数组中
  while (head !== null) {
    arr.push(head.val)
    end++
    head = head.next
  }
  // 构建末尾指针
  end--
  // 首递增、尾递减比较是否相等
  while (start < end) {
    if (arr[start] !== arr[end]) return false
    start++
    end--
  }
  return true
}

快慢指针

  1. 使用快慢指针找到链表中点
  2. 翻转前半部分链表(新的慢指针 next 指向上一轮的慢指针)
  3. 比较两部分链表节点是否相同
代码语言:javascript
代码运行次数:0
运行
复制
var isPalindrome = function(head) {
  // 不足两个节点之间返回true
  if (head === null || head.next === null) return true

  let slow = head,
    fast = head,
    middle = null
  // 找到链表中点、并且构建前半部分链表的翻转链表
  while (fast !== null && fast.next !== null) {
    fast = fast.next.next
    let temp = slow.next
    slow.next = middle
    middle = slow
    slow = temp
  }
  // 找到后半段的起点
  if (fast !== null) slow = slow.next
  // 比较两个链表的节点是否相同
  while (slow !== null) {
    if (slow.val !== middle.val) return false
    slow = slow.next
    middle = middle.next
  }
  return true
}

博客: 前端小书童

每天的每日一题,写的题解会同步更新到公众号一天一大 lee 栏目 欢迎关注留言

公众号:前端小书童

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端小书童 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目:
    • 示例:
  • 抛砖引玉
    • 快慢指针
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档