leetcode 剑指 Offer 24. 反转链表 双指针O(n)反转链表好题

剑指 Offer 24. 反转链表

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

限制:

0 <= 节点个数 <= 5000

注意:本题与主站 206 题相同:https://leetcode-cn.com/problems/reverse-linked-list/
通过次数74,006
提交次数98,644


以下图片来自题解区大神路漫漫我不畏 发布于 2020-02-17

原题解链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/solution/fan-zhuan-lian-biao-yi-dong-de-shuang-zhi-zhen-jia/
leetcode 剑指 Offer 24. 反转链表 双指针O(n)反转链表好题_第1张图片


  • 双指针反转链表,leetcode@路漫漫我不畏大佬的题解简洁明了
  • 开一个tmp指针保存快指针的next,后面还原即可
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
#define Node ListNode
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        Node *low = 0, *fast = head;
        while(fast) {
            Node* tmp = fast->next;
            fast->next = low;
            low = fast;
            fast = tmp;
        }
        return low;
    }
};

你可能感兴趣的:(反转链表,双指针,好题,线性时间,经典剑指offer)