返回顶部

[leetcode]206. 反转链表

206. 反转链表

Difficulty: 简单

反转一个单链表。

示例:

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

进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?


Solution 1


class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode *pre = NULL, *cur = head;
        while(cur!=NULL){
            ListNode* tmp = cur->next;
            cur->next = pre;
            pre = cur;
            cur = tmp;
        }
        return pre;
    }
};

思路

两个指针记录前一个和当前指针,初始化pre指针为NULL,作为逆序后的NULL使,后一个cur指针记录当前值,使得cur指向pre即可,之后cur和pre借助一个零时变量向后移动就可以了


solution 2


思路

递归


后记

(2020/07/02)无语死了,今天面试三鹿蛋居然考到这题,结果我已经很久没有回顾这一题了,根本记不得什么解法,第一映像想到递归,但是根本写不出来,于是匆忙中只想到借助栈去解决问题。然后被面试官问有没有不借助栈的解法,他提示用双指针,但是我根本记不住双指针法精髓,写出的代码破绽百出,我的天,这题刷的好郁闷。🤮

posted @ 2020-07-02 16:04  Swetchine  阅读(120)  评论(0编辑  收藏  举报