本文介绍迭代(双指针)、递归两种实现方法。 方法一:迭代(双指针) 考虑遍历链表,并在访问各节点时修改 next 引用指向,算法流程见注释。 复杂度分析: 时间复杂度 O(N) : 遍历链表使用线性大小时间。 空间复杂度 O(1) : 变量 pre 和cur 使用常
20.6k
1.3k
1.5k
题目列表
随机一题
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* reverseList(ListNode* head) { } };
关闭上一题解1298 / 1552下一题解
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */classSolution{public ListNodereverseList(ListNode head){//当反转最后一个节点时,跳出递归调用if (head ==null || head.next ==null)return head;//反转除了头节点之外的其他节点 ListNode newHead = reverseList(head.next);//头节点单独处理//例如链表1->2>3>4>5,头节点是1,经过上面的递归调用之后变成了1 2