淄博学校网站建设方案,android网站客户端开发,艺术培训学校系统网站怎么做,公司推广业务哪个平台好目录
力扣206. 反转链表
解析代码 力扣206. 反转链表
206. 反转链表
LCR 024. 反转链表
难度 简单
给你单链表的头节点 head #xff0c;请你反转链表#xff0c;并返回反转后的链表。
示例 1#xff1a; 输入#xff1a;head [1,2,3,4,5]
输出#xff1a;[5,4,3,…目录
力扣206. 反转链表
解析代码 力扣206. 反转链表
206. 反转链表
LCR 024. 反转链表
难度 简单
给你单链表的头节点 head 请你反转链表并返回反转后的链表。
示例 1 输入head [1,2,3,4,5]
输出[5,4,3,2,1]示例 2 输入head [1,2]
输出[2,1]示例 3
输入head []
输出[]提示
链表中节点的数目范围是 [0, 5000]-5000 Node.val 5000
进阶链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* reverseList(ListNode* head) {}
}; 解析代码
这次循环迭代也写过了且用循环更好但练下递归 左图就是把紫矿里的链表反转后链接到headhead再指向空右图就是把链表看成一棵树。
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* reverseList(ListNode* head) {// 用下面的循环迭代更好但练下递归// 链表看成一颗树遇到空结点/叶子结点就返回让叶子结点指回去if(head nullptr || head-next nullptr)return head;ListNode* newHead reverseList(head-next); // 把head后面的都递归好head-next-next head; // 让叶子结点指回去head-next nullptr; // 为了统一步骤return newHead;// 循环迭代法/*ListNode *newHead nullptr, *cur head;while(cur){ListNode *curNext cur-next;cur-next newHead; // 头插newHead cur; // 往后走cur curNext;}return newHead;*/}
};