題目:
解答:
對143稍作修改即可,判斷兩個指針指向的是否一直相等。
終止條件為不等或者head2=nullptr
class Solution {
public:ListNode *rev(ListNode *head){ListNode *cur = head;ListNode *pre = nullptr;while(cur){ListNode * nxt = cur->next;cur->next = pre;pre = cur;cur = nxt;}return pre;}ListNode *midd(ListNode *head){ListNode *fast = head;ListNode *slow = head;while(fast && fast->next){fast = fast->next->next;slow = slow->next;}return slow;}bool isPalindrome(ListNode* head) {ListNode *mid = midd(head);ListNode *head2 = rev(mid);while(head2){if(head->val != head2->val)return false;head=head->next;head2=head2->next;}return true;}
};
時間復雜度O(n)
空間復雜度O(1)