医院网站专题用ps怎么做,网站流量报告,怎么用外国的服务器做网站,游戏推广员是违法的吗本系列博客为个人刷题思路分享#xff0c;有需要借鉴即可。 1.题目链接#xff1a; LINK 2.详解思路#xff1a; 思路#xff1a;思路#xff1a;先找到中间节点#xff0c;然后逆置后半部分链表#xff0c;一个指针指向链表的头节点#xff0c;再一个指针指向逆置的头… 本系列博客为个人刷题思路分享有需要借鉴即可。 1.题目链接 LINK 2.详解思路 思路思路先找到中间节点然后逆置后半部分链表一个指针指向链表的头节点再一个指针指向逆置的头节点一一进行比对。 本身这个题目时比较难的所以先搞几个简单的相关题目铺垫一下 铺垫题目1若需要见详解请单击LINK 铺垫题目2若需见详解请单击LINK 所以解决回文链表这道题要结合上面两道题目的代码先找到中间节点再逆置再比对。 /*
struct ListNode {int val;struct ListNode *next;ListNode(int x) : val(x), next(NULL) {}
};*///找到中间结点
struct ListNode* middleNode(struct ListNode* head) {//思路2快慢指针法struct ListNode* fast head;struct ListNode* slow head;while(fast fast-next)//快指针走到头{slow slow-next;fast fast-next-next;}return slow;}struct ListNode* reverseList(struct ListNode* head)
{//逆置链表为空if(head nullptr) return head;//不为空struct ListNode* n1 nullptr;struct ListNode* n2 head;struct ListNode* n3 head-next;while(n2){//逆置n2-next n1;n1 n2;n2 n3;if(n3)//n3不为空{n3 n3-next;}}return n1;}class PalindromeList {
public:bool chkPalindrome(ListNode* A) {// write code here//找到中间节点struct ListNode* pMidNode middleNode(A);//逆置中间节点及其以后的节点struct ListNode* pNewMidNode reverseList(pMidNode);//对比while(ApNewMidNode){if(pNewMidNode-val!A-val){return false;}//向后走A A-next;pNewMidNode pNewMidNode-next;}return true;}
};完。