欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > LeetCode LCR027.回文链表 C写法

LeetCode LCR027.回文链表 C写法

2025/1/19 13:12:44 来源:https://blog.csdn.net/m0_63816268/article/details/140356743  浏览:    关键词:LeetCode LCR027.回文链表 C写法

LeetCode 027.回文链表 C写法

image-20240710190222723

思路🧐:

​ 快慢指针+反转链表,通过快慢指针找到中间结点,再将中间结点后的所有结点反转。如果是回文链表那么中间结点往后的值与头结点到中间结点的值都相等,如果有不相等的就不是回文链表。

代码✨:

 struct ListNode* MidNode(struct ListNode* head) //找中间结点{struct ListNode* fast = head;struct ListNode* slow = head;while(fast && fast->next){fast = fast->next->next;slow = slow->next;}return slow;}struct ListNode* Reverse(struct ListNode* midhead) //链表反转{struct ListNode* rhead = NULL;struct ListNode* cur = midhead;while(cur){struct ListNode* tail = cur->next;cur->next = rhead;rhead = cur;cur = tail;}return rhead;}bool isPalindrome(struct ListNode* head){struct ListNode* cur = head;struct ListNode* mid = MidNode(head);struct ListNode* midhead = Reverse(mid);while(cur != mid) //当cur走到mid结点处就结束{if(cur->val != midhead->val) //如果不相等就返回false{return false;}else //如果相等就继续往后走{cur = cur->next;midhead = midhead->next;}}return true;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com