相交链表

ps:因为可能会存在没有相交的点,所以一直往前走,然后回到开头继续的方法会导致死循环(如果一定有焦点是可以的)

方法1.使用哈希表/集合,先遍历一个链表,把节点存进去,然后遍历另外一个链表查看是否在哈希表中已经存放过了

方法2.使用栈,先开两个栈,然后遍历一遍把两个链表分别放进栈里,然后一个一个pop找到最后一个还是一样的节点

反转链表

注意这题是要返回反转后的链表头

递归解法

1
2
3
4
5
6
7
8
9
10
class Solution {
public:
ListNode* reverseList(ListNode* head) {
if(!head||!head->next)return head;
auto ret=reverseList(head->next);
head->next->next=head;
head->next =nullptr;//记得这里要切断指向,不然会相互指着,形成环
return ret;
}
};//就是本质上是要处理尾节点的指向要指向空,同时为了处理传进来是空的情况,一开始要同时判断!head才可以