/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ #include <new> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return bool布尔型 */ bool isPalindrome(ListNode* head) { // write code here // 中间向两端扩展 vector<int> ans; while(head) { ans.emplace_back(head->val); head = head->next; } int len = ans.size(); int mid = len/2; int left = 0, right = 0; // 偶数个元素 if(len%2==0) { left = mid-1; right = mid; } // 奇数个元素 else { left = mid-1; right = mid+1; } while(left>=0 && right<len) { if(ans[left]!=ans[right]) return false; --left; ++right; } return true; } };