Palindrome Linked List

原创 2015年07月11日 00:34:54

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?

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    bool isPalindrome(ListNode* head) {
        if (head == NULL)
        {
            return true;
        }
        ListNode *p = head;
	    ListNode *q = head;
	    while (p->next && p->next->next)
	    {
		    p  = p->next->next;
		    q = q->next;
	    }
	    ListNode *midNode = q;
	    ListNode *secondHead = revert(midNode);
	
	    p = head;
	    q = secondHead;
	    while (p != NULL)
	    {
		    if (p->val != q->val)
		    {
			    return false;
		    }
		    p = p->next;
		    q = q->next;
	    }

	    revert(midNode);
	    return true; 
    }
private:
    ListNode* revert(ListNode *head)
    {
	    ListNode *p = head->next;
	    ListNode *q = head;
	    while (p != NULL)
	    {
		    ListNode *r = p->next;
		    p->next = q;
		    q = p;
		    p = r;
	    }

	    head->next = NULL;
	    return q;
    }
};


【LeetCode-面试算法经典-Java实现】【092-Reverse Linked List II(反转单链表II)】

【092-Reverse Linked List II(反转单链表II)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Reverse a linked list fro...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月06日 07:40
  • 1659

面试算法:Linked List-链 表

Linked List-链 表 很多面试相关的书籍都有链表和字符串操作相关的题,这类问题更考验编程基本功和对基础知识的掌握情况。由于之前很多题目做过就忘,再做时总是磕磕绊绊,说明没有真正消化...
  • bobbycho
  • bobbycho
  • 2016年10月23日 20:02
  • 82

C++实现单链表(Singly-Linked List)追加、遍历、删除

#include using namespace std; struct Node { int data; struct Node* next; }; class List { Node* ...
  • wupeak
  • wupeak
  • 2015年01月27日 00:13
  • 649

C++:实现LinkedList 学习抽象数据类型

C++:实现LinkedList 学习抽象数据类型标签(空格分隔): c++ 数据结构 作者:陈小默C实现LinkedList 学习抽象数据类型 定义需求 作为类 作为List 作为栈stack 作...
  • qq_32583189
  • qq_32583189
  • 2016年09月04日 17:36
  • 3332

C实现 LeetCode->Reverse Linked List (双指针大法)(单链表反转)

Reverse a singly linked list. /**  *  Reverse a singly linked list    反转单链表,请牢记 Reverse()...
  • liutianshx2012
  • liutianshx2012
  • 2015年06月22日 15:04
  • 503

链表(LinkedList) C 语言实现

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。如图: 下面是代码实现: #include #include struct stud...
  • song_hui_xiang
  • song_hui_xiang
  • 2015年07月24日 15:29
  • 1599

[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) tim...
  • xy010902100449
  • xy010902100449
  • 2015年10月08日 21:46
  • 444

Palindrome Linked List - LeetCode 判断一个链表是否是回文结构

Given a singly linked list, determine if it is a palindrome. Follow up: Could you do it in O(n) ti...
  • USTC_Zn
  • USTC_Zn
  • 2017年03月04日 21:10
  • 218

234. Palindrome Linked List | 判断一个单链表是否是回文

Given a singly linked list, determine if it is a palindrome. Follow up: Could you do it in O(n) ...
  • Yangtong157
  • Yangtong157
  • 2017年03月08日 15:59
  • 79

linked-list-cycle-ii(有环链表的第一个公共节点)

题目描述: Given a linked list, return the node where the cycle begins. If there is no cycle, returnnul...
  • zh_ang_lei
  • zh_ang_lei
  • 2016年09月25日 23:39
  • 219
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Palindrome Linked List
举报原因:
原因补充:

(最多只允许输入30个字)