一、笔记部分
思路1:回文的意思是比较最前面与最后面数的大小,然后往中间走,如有不同的就返回false,相同就一直比较。直到比较完。
用栈就可以快速提取出从后往前的数。但是这个需要空间复杂度O(n)
思路2:递归也可以到了最后一个然后返回,在每一步进行与头指针比较,然后返回的是已经比较好的链表指针。
思路3:直接在原链表进行操作,就是空间度为O(1)
前半段和后半段进行比较,但是链表又只能从前往后遍历,所以后半段反转,后快指针先走,然后逐步比较。
①需判断是奇数还是偶数,这样才知道快慢指针是从哪个位置进行开始移动。直到快指针到达了,那么慢指针就是后半部分的开头。
1.如果遇到需要折半遍历数组,两指针一起跑。
2.看奇数偶数情况,还是要自己画图,才知道前半段和后半段关系
3.解耦是非常爽的。
4.断开前后关系,好遍历比较,好反转
5.既然要反转链表,那么肯定要返回新的头指针,所以肯定要设置一个。
6.将当前节点的下一个节点保留,将这个节点的尾部连接到上个新的头指针,并设置为新的头指针,那么就反转了,然后要循环做这个事,将Head赋值为这儿节点之前存的下一个节点。
9、比较相等。
二、链表类型的高频面试题汇总:
https://blog.csdn.net/qq_40262372/article/details/112850324
三、各种类型的高频面试题汇总:
https://blog.csdn.net/qq_40262372/article/details/112556249