57-Palindrome Linked List
- Palindrome Linked List My Submissions QuestionEditorial Solution
Total Accepted: 46990 Total Submissions: 166743 Difficulty: Easy
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?
先给出一种时间O(n)空间O(n)的算法,思路就是顺序把值放入到顺序表
然后在顺序表判定回文
class Solution {
public:
bool isPalindrome(ListNode* head) {
vector<int> vals;
while(head!=NULL){
vals.push_back(head->val);
head = head->next;
}
int n = vals.size(),flag=0;
for(int i=0;i<n/2;++i)
if(vals[i]!=vals[n-1-i]){
flag =1;
break;
}
if(flag==1)return false;
else return true;
}
};
给出O(n)空间O(1)的算法,虽然代码长很多,但是省空间啊!!
思想:O->O->O->O->O前半部分逆转,然后中间出发向两端比较
class Solution {
public:
bool isPalindrome(ListNode* head) {
if(head==NULL||head->next==NULL)return true;
int len=0;
ListNode *p =head;
while(p!=NULL){
len++;
p=p->next;
}
if(len==2)return head->next->val==head->val; //因为逆转的时候是针对大于等于2(2*2就是4)的情况来考虑,所以先处理小于4
if(len==3)return head->val==head->next->next->val;
int i=1;
ListNode *fir=head,*sec=head;
while(i++<len/2)fir=fir->next;
if(len%2==0)sec = fir->next;
else sec = fir->next->next;
if(len>=4){ //逆转前半部分
ListNode *pre_next = fir->next;
ListNode *tmp=head->next,*pretmp = head;
while(tmp!=NULL&&tmp!=pre_next){
ListNode *tmpnext = tmp->next;
tmp->next = pretmp;
pretmp = tmp;
tmp=tmpnext;
}
head->next=NULL;
}
while(fir!=NULL){ //从中间出发判断回文
if(fir->val!=sec->val)return false;
fir = fir->next;
sec = sec->next;
}
return true;
}
};
57-Palindrome Linked List的更多相关文章
- [CareerCup] 2.7 Palindrome Linked List 回文链表
2.7 Implement a function to check if a linked list is a palindrome. LeetCode上的原题,参见我之前的博客Palindrome ...
- 【LeetCode】9 & 234 & 206 - Palindrome Number & Palindrome Linked List & Reverse Linked List
9 - Palindrome Number Determine whether an integer is a palindrome. Do this without extra space. Som ...
- 【leetcode】234. Palindrome Linked List
234. Palindrome Linked List 1. 使用快慢指针找中点的原理是fast和slow两个指针,每次快指针走两步,慢指针走一步,等快指针走完时,慢指针的位置就是中点.如果是偶数个数 ...
- 【LeetCode】234. Palindrome Linked List (2 solutions)
Palindrome Linked List Given a singly linked list, determine if it is a palindrome. Follow up:Could ...
- 234. Palindrome Linked List【easy】
234. Palindrome Linked List[easy] Given a singly linked list, determine if it is a palindrome. Follo ...
- LeetCode_234. Palindrome Linked List
234. Palindrome Linked List Easy Given a singly linked list, determine if it is a palindrome. Exampl ...
- 234. Palindrome Linked List - LeetCode
Question 234. Palindrome Linked List Solution 题目大意:给一个链表,判断是该链表中的元素组成的串是否回文 思路:遍历链表添加到一个list中,再遍历lis ...
- [LeetCode] 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 Palindrome Linked List
Given a singly linked list, determine if it is a palindrome. Follow up:Could you do it in O(n) time ...
- Palindrome Linked List
Given a singly linked list, determine if it is a palindrome. Follow up:Could you do it in O(n) time ...
随机推荐
- logstash的安装和简单使用
logstash的安装和简单使用 一.安装 1.下载并解压 2.logstash 一些命令行参数 1.查看帮助信息 2.加载指定pipeline文件路径 3.检测配置文件语法是否有错误 4.热加载pi ...
- 修改git仓库的远程地址
在我们开发的过程中,代码一般是由 git 来管理的,但有些时候我们的 git 仓库的地址可能发生了变换,比如我们使用的 gitLab 地址发生了变化,那么这个时候如何来将原项目的 git 地址进行修改 ...
- 【STM32学习笔记】USART 硬件流控
流控的概念源于 RS232 这个标准,在 RS232 标准里面包含了串口.流控的定义.大家一定了解,RS232 中的"RS"是Recommend Standard 的缩写,即&qu ...
- 开关电源(DC-DC)与LDO电源的区别---纹波
https://blog.csdn.net/edadoc2013/article/details/78435775
- readelf
readelf的help内容如下所示: Usage: readelf <option(s)> elf-file(s) Display information about the conte ...
- Shooting Bricks题解
题目传送门 以后我绝对不会一直磕着一道题磕几个小时了...感觉还是自己节奏出了问题,不知为啥感觉有点小慌... 算了,其实再回头仔细看一下这个题dp的思路还是比较好想出来的,打代码之前一定要做好足够的 ...
- ELK 脚本自动化删除索引
kibana有自带接口,可通过自带的API接口 通过传参来达到删除索引的目的. # 删除15天前的索引 curl -XDELETE "http://10.228.81.161:9201/pa ...
- Code Runner for VS Code,下载量突破 3000 万!
还记得五年前的夏天,我在巨硬写着世界上最好的语言,有时也需要带着游标卡尺写着另一门语言.然而,我对这两门语言都不熟悉,如果能在 VS Code 中方便快捷地运行各种语言,那岂不是很方便?于是,我就开发 ...
- Java测试开发--Comparable和Comparator接口(五)
Comparable 简介Comparable 是排序接口.若一个类实现了Comparable接口,就意味着"该类支持排序".此外,"实现Comparable接口的类的对 ...
- springboot单元测试 JUnit5
JUnit5简介 Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库 JUnit 5官方文档 作为最新版本的JUnit框架,JUnit5与之前版本的JUnit框架有很 ...