Palindrome Linked List

原创 2015年07月10日 22:34:29

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||!head->next){
            return true;
        }
        ListNode *p,*pre,*q;
        p=head;
        q=head;
        pre=NULL;
        while(q){
            q=q->next;
            if(!q){
                break;
            }
            pre=p;
            p=p->next;
            q=q->next;
        }
        pre->next=NULL;
        ListNode *r=reverse(p);
        p=head;
        q=r;
        while(p&&q){
            if(p->val!=q->val){
                return false;
            }
            p=p->next;
            q=q->next;
        }
        return true;

    }

    ListNode* reverse(ListNode *head){
        ListNode *h=NULL;
        ListNode *p=head;
        ListNode *tail=NULL;
        while(p){
            ListNode *next=p->next;
            p->next=NULL;
            if(!h){
                h=p;
            }else{
                p->next=h;
                h=p;
            }
            p=next;
        }
        return h;
    }
};

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 a...
  • sunao2002002
  • sunao2002002
  • 2015年07月16日 22:48
  • 11241

234. Palindrome Linked List [easy] (Python)

题目链接https://leetcode.com/problems/palindrome-linked-list/题目原文 Given a singly linked list, determin...
  • coder_orz
  • coder_orz
  • 2016年05月03日 19:09
  • 1487

234. Palindrome Linked List(python)

Given a singly linked list, determine if it is a palindrome. Follow up: Could you do it in O(n) ti...
  • qq_28119401
  • qq_28119401
  • 2016年09月18日 21:45
  • 359

leetcode 234: Palindrome Linked List

leetcode 234: Palindrome Linked List python, java, c++
  • xudli
  • xudli
  • 2015年07月14日 04:40
  • 8230

LeetCode234_PalindromeLinkedList (判断是否为回文链表) Java题解

题目: Given a singly linked list, determine if it is a palindrome. Follow up: Could you do it...
  • u012249528
  • u012249528
  • 2015年07月29日 11:40
  • 2943

LeetCode - 234. Palindrome Linked List

一开始思考的方式同样是使用Stack,但是这样并没有满足题目要求的利用constant space,所以这里的想法是使用fast runner/slow runner找到Linked List的中间部...
  • shenzhu0127
  • shenzhu0127
  • 2016年07月04日 15:27
  • 142

Leetcode:234. Palindrome Linked List(JAVA)

【问题描述】 Given a singly linked list, determine if it is a palindrome. Follow up: Could you do...
  • u010183658
  • u010183658
  • 2016年03月16日 21:19
  • 398

【leetcode】234. Palindrome Linked List(Python & C++)

234. Palindrome Linked List题目链接234.1 题目描述:Given a singly linked list, determine if it is a palindrom...
  • liuxiao214
  • liuxiao214
  • 2017年09月02日 20:15
  • 391

[LeetCode]Palindrome Linked List

解题思路: 1,单向链表就只能从前找到后,不能反向迭代。 2,回文的特点,就是要从两边迭代到中间。 3,综合上述两个特点,可以想到把链表后半部分翻转一下(题目没说不能破坏原有结构),然后从链表的...
  • aFeiOnePiece
  • aFeiOnePiece
  • 2015年07月18日 23:01
  • 182

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...
  • mike_learns_to_rock
  • mike_learns_to_rock
  • 2015年07月30日 23:36
  • 112
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Palindrome Linked List
举报原因:
原因补充:

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