Palindrome Linked List

Given a singly linked list, determine if it is a palindrome.

Follow up:
Could you do it in O(n) time and O(1) space?

https://leetcode.com/problems/palindrome-linked-list/


判断单链表是否为回文,要求时间复杂度O(n),空间复杂度O(1)。

如果对空间复杂度没有要求,有两种简单的做法。

一种是开个数组,把链表里的值挨个塞进去,然后双指针。

还有一种是做一轮遍历,把单链表变成双链表(javasrcipt可以修改实例化的对象), 然后双指针。

时间复杂度O(n),空间复杂度O(1)的解法:

1.第一轮遍历用快慢指针(快指针每次走两步,慢指针每次走一步)寻找中点 -> O(n)

2.反转后半段链表 -> O(n/2)

3.比较 -> O(n/2)

合起来时间还是O(n)。

你确定这是easy?

 1 /**
 2  * Definition for singly-linked list.
 3  * function ListNode(val) {
 4  *     this.val = val;
 5  *     this.next = null;
 6  * }
 7  */
 8 /**
 9  * @param {ListNode} head
10  * @return {boolean}
11  */
12 var isPalindrome = function(head) {
13     //find middle
14     var slow = head, fast = head, cacheHead = head;
15     while(fast !== null && fast.next !== null){
16         slow = slow.next;
17         fast = fast.next.next;
18     }
19
20     //reverse link list
21     var list2Head = new ListNode("head"), tmp;
22     while(slow !== null){
23         tmp = slow;
24         slow = slow.next;
25         tmp.next = list2Head.next;
26         list2Head.next = tmp;
27     }
28
29     //judge palindrom
30     var list1 = cacheHead, list2 = list2Head.next;
31     for(; list2 !== null; list1 = list1.next, list2 = list2.next){
32         if(list1.val !== list2.val){
33             return false;
34         }
35     }
36     return true;
37 };

转载于:https://www.cnblogs.com/Liok3187/p/4641048.html

[LeetCode][JavaScript]Palindrome Linked List相关推荐

  1. 【回文串7】LeetCode 234. Palindrome Linked List

    LeetCode 234. Palindrome Linked List Solution1:我的答案 一遍过,哈哈哈! /*** Definition for singly-linked list. ...

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

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

  3. LeetCode 234. Palindrome Linked List

    题目: Given a singly linked list, determine if it is a palindrome. 思路: 给定一个链表,判断它是不是回文链表 根据链表的奇偶分情况,然后 ...

  4. [LeetCode] 234. Palindrome Linked List_Easy tag: Linked List

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

  5. LeetCode 234 Palindrome Linked List

    Given a singly linked list, determine if it is a palindrome. 思路: 回文结构从后向前遍历与从前向后遍历的结果是相同的,可以利用一个栈的结构 ...

  6. [swift] LeetCode 234. Palindrome Linked List

    Given a singly linked list, determine if it is a palindrome. Follow up: Could you do it in O(n) time ...

  7. LeetCode 92. Reverse Linked List II--Python 解法--反转部分链表--笔试算法题

    题目地址:Reverse Linked List II - LeetCode Reverse a linked list from position m to n. Do it in one-pass ...

  8. Leetcode 206. Reverse Linked List

    Similar Questions Reverse Linked List II Binary Tree Upside Down Palindrome Linked List 思路:链表反转. 解法一 ...

  9. 【整数转字符串】LeetCode 9. Palindrome Number

    LeetCode 9. Palindrome Number Solution1: 不利用字符串 class Solution { public:bool isPalindrome(int x) {if ...

最新文章

  1. ElasticSearch+ElasticGeo+Geoserver发布ES地理数据
  2. mongodb中简单的聚合查询
  3. Django2.0——模板渲染(一)
  4. 黑客攻破网站涂鸦特效(强烈建议看看)
  5. TreeView控件之,后台构建TreeView(WinForm小程序)
  6. spring boot配置dubbo(properties)
  7. 抹掉所有内容和设置 macOS Monterey这个新功能太好用
  8. (转)商城系统商品属性的数据库设计思路
  9. advanced ip scanner —— 局域网下 ip 及设备的扫描
  10. MyBatis+MySQL 返回插入的主键ID
  11. acunetix12及Awvs12.x安装
  12. Ip-san 配置过程
  13. Python爬取某境外网站漫画,心血来潮,爬之
  14. cd linux 镜像,cdlinux镜像 v0.9.7官方版
  15. jsp+Servlet实现短信验证码(腾讯云)保姆式教学
  16. 计算机网络职业评估报告,计算机网络技术专业个人职业生涯规划书.doc
  17. JavaScript系列之条件运算符
  18. c语言兵器谱,程序员兵器谱——那些男人们梦寐以求的终极键盘
  19. PIC16F887 单片机 接线 实物器件说明 原理
  20. 数据分析师未来发展前景如何?

热门文章

  1. Thymeleaf $/*/#/@语法
  2. 【CCCC】L3-025 那就别担心了 (30分),dfs搜索起点到终点的路径条数。
  3. 【PAT (Basic Level) Practice (中文)】1029 旧键盘 (20分)
  4. 832计算机专业基础,2019年考试科目832计算机组成原理与数据结构.doc
  5. linux查看log日志在哪,如何查看linux的系统log日志
  6. pytorch .item_从数据到模型,你可能需要1篇详实的pytorch踩坑指南
  7. java tostring的用处_java中的toString什么意思?toString有什么用?
  8. python第三方插件pip是什么_Python怎么安装第三方模块?
  9. surface 安卓双系统_一张图看懂微软Surface发布会:史上最大惊喜
  10. vivado 使用DDS IP方法