本文主要是介绍LeetCode--234 回文链表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
请判断一个链表是否为回文链表。
示例
示例 1:输入: 1->2
输出: false
示例 2:输入: 1->2->2->1
输出: true
/*** 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 *slow = head, *fast = head;while (fast->next && fast->next->next) {slow = slow->next;fast = fast->next->next;}//反转后半段链表if (slow->next&&slow->next->next){ListNode* pre = slow->next;ListNode* cur = slow->next->next;ListNode* r;pre->next = nullptr;while (cur != nullptr){r = cur->next;cur->next = pre;pre = cur;cur = r;}slow = pre;}else{slow = slow->next;slow->next = nullptr;}ListNode* curHead = head;while (slow) {if (curHead->val != slow->val) return false;slow = slow->next;curHead = curHead->next;}return true;}
};
这篇关于LeetCode--234 回文链表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!