234. Palindrome Linked List
Posted 高数考了59
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了234. Palindrome Linked List相关的知识,希望对你有一定的参考价值。
判定链表是否为回文
方法一:借助一个栈,将链表节点值全部压入栈中,再弹出,依次比较。本质是把链表节点值逆置,然后与原链表节点值比较。全部相等则为回文。
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 static int wing=[]() 10 { 11 std::ios::sync_with_stdio(false); 12 cin.tie(NULL); 13 return 0; 14 }(); 15 16 class Solution 17 { 18 public: 19 bool isPalindrome(ListNode* head) 20 { 21 stack<int> istack; 22 ListNode *pr=head; 23 while(pr) 24 { 25 istack.push(pr->val); 26 pr=pr->next; 27 } 28 while(head) 29 { 30 if(head->val!=istack.top()) 31 return false; 32 head=head->next; 33 istack.pop(); 34 } 35 return true; 36 } 37 };
方法二:先计算链表长度,把前半部分链表逆置,然后比较新链和剩下那段链节点值是否依次相等。
以上是关于234. Palindrome Linked List的主要内容,如果未能解决你的问题,请参考以下文章