给你一个单链表的头节点 head
,请你判断该链表是否为回文链表。如果是,返回 true
;否则,返回 false
。
示例 1:
输入:head = [1,2,2,1] 输出:true
示例 2:
输入:head = [1,2] 输出:false
思路:使用栈来存储节点值,然后开始比对
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: bool isPalindrome(ListNode* head) { //使用栈来存储节点值 stack<int> st; ListNode *p = head; while(p){ st.push(p->val); p = p->next; } //开始比对 p = head; while(p){ int val = st.top(); st.pop(); if(val!=p->val){ return false; } p=p->next; } return true; } };
标签:head,ListNode,val,int,next,链表,回文 From: https://www.cnblogs.com/yueshengd/p/18620559