标签:ali class 节点 val node stack 本质 [] efi
判定链表是否为回文
方法一:借助一个栈,将链表节点值全部压入栈中,再弹出,依次比较。本质是把链表节点值逆置,然后与原链表节点值比较。全部相等则为回文。
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 };
方法二:先计算链表长度,把前半部分链表逆置,然后比较新链和剩下那段链节点值是否依次相等。
标签:ali class 节点 val node stack 本质 [] efi
原文地址:https://www.cnblogs.com/zhuangbijingdeboke/p/9083074.html