[LeetCode][JavaScript]Palindrome Linked List
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相关推荐
- 【回文串7】LeetCode 234. Palindrome Linked List
LeetCode 234. Palindrome Linked List Solution1:我的答案 一遍过,哈哈哈! /*** Definition for singly-linked list. ...
- [LeetCode] 234. Palindrome Linked List 回文链表
Given a singly linked list, determine if it is a palindrome. Example 1: Input: 1->2 Output: false ...
- LeetCode 234. Palindrome Linked List
题目: Given a singly linked list, determine if it is a palindrome. 思路: 给定一个链表,判断它是不是回文链表 根据链表的奇偶分情况,然后 ...
- [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 ...
- LeetCode 234 Palindrome Linked List
Given a singly linked list, determine if it is a palindrome. 思路: 回文结构从后向前遍历与从前向后遍历的结果是相同的,可以利用一个栈的结构 ...
- [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 ...
- 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 ...
- Leetcode 206. Reverse Linked List
Similar Questions Reverse Linked List II Binary Tree Upside Down Palindrome Linked List 思路:链表反转. 解法一 ...
- 【整数转字符串】LeetCode 9. Palindrome Number
LeetCode 9. Palindrome Number Solution1: 不利用字符串 class Solution { public:bool isPalindrome(int x) {if ...
最新文章
- ElasticSearch+ElasticGeo+Geoserver发布ES地理数据
- mongodb中简单的聚合查询
- Django2.0——模板渲染(一)
- 黑客攻破网站涂鸦特效(强烈建议看看)
- TreeView控件之,后台构建TreeView(WinForm小程序)
- spring boot配置dubbo(properties)
- 抹掉所有内容和设置 macOS Monterey这个新功能太好用
- (转)商城系统商品属性的数据库设计思路
- advanced ip scanner —— 局域网下 ip 及设备的扫描
- MyBatis+MySQL 返回插入的主键ID
- acunetix12及Awvs12.x安装
- Ip-san 配置过程
- Python爬取某境外网站漫画,心血来潮,爬之
- cd linux 镜像,cdlinux镜像 v0.9.7官方版
- jsp+Servlet实现短信验证码(腾讯云)保姆式教学
- 计算机网络职业评估报告,计算机网络技术专业个人职业生涯规划书.doc
- JavaScript系列之条件运算符
- c语言兵器谱,程序员兵器谱——那些男人们梦寐以求的终极键盘
- PIC16F887 单片机 接线 实物器件说明 原理
- 数据分析师未来发展前景如何?
热门文章
- Thymeleaf $/*/#/@语法
- 【CCCC】L3-025 那就别担心了 (30分),dfs搜索起点到终点的路径条数。
- 【PAT (Basic Level) Practice (中文)】1029 旧键盘 (20分)
- 832计算机专业基础,2019年考试科目832计算机组成原理与数据结构.doc
- linux查看log日志在哪,如何查看linux的系统log日志
- pytorch .item_从数据到模型,你可能需要1篇详实的pytorch踩坑指南
- java tostring的用处_java中的toString什么意思?toString有什么用?
- python第三方插件pip是什么_Python怎么安装第三方模块?
- surface 安卓双系统_一张图看懂微软Surface发布会:史上最大惊喜
- vivado 使用DDS IP方法