Leetcode:234 回文链表
leetcode:234 回文链表
关键点:请判断一个链表是否为回文链表。
示例 1:
输入: 1->2
输出: false
示例 2:
输入: 1->2->2->1
输出: true。
1/**
2 * Definition for singly-linked list.
3 * struct ListNode {
4 * int val;
5 * ListNode *next;
6 * ListNode(int x) : val(x), next(NULL) {}
7 * };
8 */
9/**
10*解题思路:1->2->2->1
11* 1.遍历中间节点,区分左右链表
12* 2.反转链表
13*/
14class Solution {
15public:
16 bool isPalindrome(ListNode* head) {
17
18 ListNode *pslow = head, *pfast = head;
19 if(!head)
20 return true;
21 //1.slow移动到中间节点
22 while (pfast&&pfast->next&&pfast->next->next) {
23 pslow = pslow->next;
24 pfast = pfast->next->next;
25 }
26 //2.反转链表
27 pslow->next = reverse(pslow->next);
28 ListNode *pre = head;
29 while (pslow->next) {
30 pslow = pslow->next;
31 if (pre->val != pslow->val) return false;
32 pre = pre->next;
33 }
34 return true;
35
36 }
37 ListNode* reverse(ListNode* head){
38 if(!head)
39 return NULL;
40 ListNode* q = head->next; //下一节点
41 ListNode* p = head; //前一节点
42 ListNode* pr;
43 head->next = NULL; //头节点指向空
44 while(q){
45 pr = q->next; //先保存节点值
46 q->next = p; //指向q
47 p = q; //指向反转节点
48 q = pr; //指向下一节点
49 }
50 head = p; //最后q必然指向NULL,所以返回了p作为新的头指针
51 return head;
52 }
53
54};
Leetcode:234 回文链表的更多相关文章
- Java实现 LeetCode 234 回文链表
234. 回文链表 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否 ...
- Leetcode 234. 回文链表(进阶)
1.题目描述 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否用 O ...
- LeetCode 234——回文链表
1. 题目 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否用 O( ...
- [LeetCode] 234. 回文链表 ☆(翻转链表)
描述 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2输出: false示例 2: 输入: 1->2->2->1输出: true 进阶:你能否用 O(n) 时间复杂 ...
- leetcode 234 回文链表 Palindrome Linked List
要求用O(n)时间,和O(1)空间,因此思路是用本身链表进行判断,既然考虑回文,本方法思想是先遍历一次求链表长度,然后翻转前半部分链表:然后同时对前半部分链表和后半部分链表遍历,来判断对应节点的值是否 ...
- LeetCode 234. 回文链表
class Solution { public: bool isPalindrome(ListNode* head) { deque<int> d1, d2; ListNode* p = ...
- leetcode题目234.回文链表(快慢指针+辅助空间-简单)
题目描述: 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否用 O( ...
- 领扣(LeetCode)回文链表 个人题解
请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶:你能否用 O(n) 时间复杂 ...
- [LeetCode题解]234. 回文链表 | 快慢指针 + 反转链表
解题思路 找到后半部分链表,再反转.然后与前半部分链表比较 代码 /** * Definition for singly-linked list. * public class ListNode { ...
随机推荐
- if判断
<!-- 查询用户信息 --> <select id="queryUser3" parameterType="org.pine.mybatis.util ...
- Shell中判断语句if中-z至-d的意思
[ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真. [ ...
- 关于TensorFlow你需要了解的9件事
关于TensorFlow你需要了解的9件事 https://mp.weixin.qq.com/s/cEQAdLnueMEj0OQZtYvcuw 摘要:本文对近期在旧金山举办的谷歌 Cloud Next ...
- 微信小程序 刷新当前页面
刷新当前页面 Measure 法一: 需要的地方 this.onLoad(),试过之后,无用!!! 法二:亲测有效 在this.onReady()中进行获取数据操作(这样一来,就既可以在初次显示时直接 ...
- 第1章 HTTP协议基本介绍了解
一.常见接口协议: HTTP 超文本传输协议 HTTPS 安全超文本传输协议 FTP 文件传输协议 TCP 网络控制协议 IP 互联网协议 UDP ...
- Linux CentOS7下安装Python3及其setuptools、pip
CentOS 7系统自带Python2.7,我们尽量别去卸载它!!否则会出问题,比如yum无法使用等问题. 假若,在安装Python3时没有自动安装setuptools和pip,那么,如何在CentO ...
- ERP口碑后付关于如何设置后厨小票打印时间的问题解决方法
1. 2.
- 【redis专题(9)】事务
Redis支持简单的事务,所谓简单是因为其不支持回滚(回滚是用队列模仿的),与mysql有以下区别 rollback与discard的区别: 如果已经成功执行了2条语句, 第3条语句出错 Rollba ...
- SQL Server等待事件—RESOURCE_SEMAPHORE_QUERY_COMPILE
等待事件介绍 关于等待事件RESOURCE_SEMAPHORE_QUERY_COMPILE,官方的介绍如下: Occurs when the number of concurrent query co ...
- weblogic报错----Received exception while creating connection for pool "TDMSKD": The Network Adapter could not establish the connection
<2017-8-16 上午08时58分37秒 CST> <Info> <WebLogicServer> <BEA-000377> <Startin ...