25、字符串相加
意思是‘12’+‘13’=‘25’,但是要考虑进位问题
所以倒着遍历两个字符串,双指针枚举字符串,从右往前枚举,每次都记录一下该位置的和,以及上一位的进位值,然后创建字符串,在该位添加sum%10,记录进位sum/10,最后创建字符串反转然后转为String就ok
26、相交链表
a1->a2->c1 b1->b2->b3->c1
如何找到相交的链表呢,两个链表同时遍历,a链表遍历完就遍历b链表,b链表遍历完就遍历a链表,如果存在相交节点就退出循环,同时遇到null也会退出
为什么两者都走各自的路会同时到达交点呢?假设两者有公共交点c,a链表非公共位a-c,b链表为b-c,a走到 a+b-c时候第二次遇到公共交点,b第二次遇到公共交点为,b+a-c,两者走过的距离都为a+b-c,所以也就能同时到达。
27、重排链表
最主要是要找到规律,先找到链表的中点,然后将后半段反转,然后交替连接
所以实现三个API即可,找中点使用快慢指针就可以,反转链表写了很多次了,交替连接也比较简单,设置暂存节点然后连接即可