Leetcode 234. 回文链表
Posted randyniu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 234. 回文链表相关的知识,希望对你有一定的参考价值。
bool isPalindrome(ListNode* head) { ListNode* fast = head; ListNode* slow = head; //如果没有元素 if(head==NULL) return true; //如果就一个元素 if(fast->next==NULL) return true; //如果就两个元素 if(fast->next->next==NULL) return fast->val == fast->next->val; //上面已经进行了边界条件的判断,下面保证至少有3个元素以上 //如果超过了两个元素 while(fast->next!=NULL && fast->next->next!=NULL) { slow = slow->next; fast = fast->next->next; } //如果是奇数,slow指向中间的值,如果是偶数,slow指向中间的前一个数 fast = slow->next; slow->next = NULL; ListNode *tmp = NULL; while(fast!=NULL) { tmp = fast->next; fast->next = slow; slow = fast; fast = tmp; } //开始进行比较 fast = slow; tmp = head; bool flag = true; //这个条件判断很重要 while(fast!=NULL && tmp!=NULL) { if(fast->val != tmp->val) { flag = false; break; } fast = fast->next; tmp = tmp->next; } //对链表再次进行翻转 fast = slow->next; slow->next = NULL; tmp = NULL; while(fast!=NULL) { tmp = fast->next; fast->next=slow; slow = fast; fast = tmp; } return flag; }
以上是关于Leetcode 234. 回文链表的主要内容,如果未能解决你的问题,请参考以下文章