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 回文链表的更多相关文章

  1. Java实现 LeetCode 234 回文链表

    234. 回文链表 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否 ...

  2. Leetcode 234. 回文链表(进阶)

    1.题目描述 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否用 O ...

  3. LeetCode 234——回文链表

    1. 题目 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否用 O( ...

  4. [LeetCode] 234. 回文链表 ☆(翻转链表)

    描述 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2输出: false示例 2: 输入: 1->2->2->1输出: true 进阶:你能否用 O(n) 时间复杂 ...

  5. leetcode 234 回文链表 Palindrome Linked List

    要求用O(n)时间,和O(1)空间,因此思路是用本身链表进行判断,既然考虑回文,本方法思想是先遍历一次求链表长度,然后翻转前半部分链表:然后同时对前半部分链表和后半部分链表遍历,来判断对应节点的值是否 ...

  6. LeetCode 234. 回文链表

    class Solution { public: bool isPalindrome(ListNode* head) { deque<int> d1, d2; ListNode* p = ...

  7. leetcode题目234.回文链表(快慢指针+辅助空间-简单)

    题目描述: 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否用 O( ...

  8. 领扣(LeetCode)回文链表 个人题解

    请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶:你能否用 O(n) 时间复杂 ...

  9. [LeetCode题解]234. 回文链表 | 快慢指针 + 反转链表

    解题思路 找到后半部分链表,再反转.然后与前半部分链表比较 代码 /** * Definition for singly-linked list. * public class ListNode { ...

随机推荐

  1. java回调函数学习

    前不久学习了代理模式,其中有一个核心之一是Proxy.newProxyInstance();这里有三个参数, loader:目标对象的类加载器 interfaces:目标对象实现的所有接口组成的数组 ...

  2. JavaWeb-BeginTomcat

    上手Tomcat 1.Ubuntu 18.04 下载/安装Tomcat 以下内容参考链接 安装JDK sudo apt-get update sudo apt-get install default- ...

  3. [转载]Web Service到底是什么

    转自:http://blog.csdn.net/wooshn/article/details/8069087/  武僧的专栏 一.序言 大家或多或少都听过WebService(Web服务),有一段时间 ...

  4. HTML float 和 absolute

    block元素和inline元素在文档流中的排列方式: block元素通常被现实为独立的一块,独占一行,多个block元素会各自新起一行,默认block元素宽度自动填满其父元素宽度.block元素可以 ...

  5. 一个简单的scrollTop动画的方法

    var autoScrollTop = function (param) { var delay = param.scrollDom.height() * 20; param.dom.animate( ...

  6. SAP FI配置步骤

    http://blog.sina.com.cn/s/blog_8eda1a620100uwzj.html No. 配置对象 事务代码 配置内容 路径 备注 1 定义公司 OX15 企业结构>定义 ...

  7. 微信小程序-全国快递查询

    微信小程序-全国快递查询 摘要:WeChat.小程序.JS 开发过程 源码下载 1. GitHub 2. 百度云 链接:https://pan.baidu.com/s/1XVbtT2JsZslg4Y0 ...

  8. 纯中文C++代码,可运行

    #include <stdio.h>#include <tchar.h> #define 如果 if#define 打印 printf#define 返回 return#def ...

  9. VS调试IDAPython脚本

    本文最后修改时间:20180213 1.安装VS插件PTVS , 这一步与第2步中安装版本应该一致,否则最后调试时会连不上 https://github.com/Microsoft/PTVS/ 2.安 ...

  10. OneAPM 获得“2018中国 IT 服务创新奖”,彰显技术创新实力

    6月30日,主题为“智能服务 数字中国”的中国 IT 服务创新大会在京召开.作为第22届中国国际软件博览会的重头戏,本次大会由工业和信息化部.北京市人民政府共同主办,中国电子工业标准化技术协会信息技术 ...