在学习链表时,遇到的一个有意思的问题,记录下思路和算法。
思路
- 使用快慢两个指针找到链表中点,快指针每次移动两个结点,慢指针每次移动一个结点。
- 如果结点是奇数,中点位置不需要矫正
- 如果结点是偶数,使慢指针前进一个结点指向下中位数
- 在慢指针移动的时候,同时修改其next指针,使链表前半部分反序。
- 最后比较中点两侧的链表是否相等。
时间复杂度:O(n)
空间复杂度:O(n)
完整代码
1 | /***** Definition for linklist *****/ |
The more a man learns, the more he knows his ignorance.
在学习链表时,遇到的一个有意思的问题,记录下思路和算法。
时间复杂度:O(n)
空间复杂度:O(n)
1 | /***** Definition for linklist *****/ |
本文标题:Palindrome
发布时间:2018年10月14日 - 09:10
最后更新:2021年09月20日 - 21:09
原始链接:http://askylin.top/2018/10/14/List/
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。