美文网首页
面试题24. 反转链表

面试题24. 反转链表

作者: 周英杰Anita | 来源:发表于2020-02-27 23:32 被阅读0次

题目描述:

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

示例:

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

限制:

0 <= 节点个数 <= 5000

思路:

可以这么看,更好理解
输入: 1->2->3->4->5->NULL
输出: NULL<-1<-2<-3<-4<-5
1. 利用双指针,cur指向新链表的头结点(开始为NULL)  pre代表原链表的头节点(初始值Head),从原链表头结点开始遍历
2. 反转链表,要让1的next指指向NULL(pre.next = cur),那么1->2就会断开,所以我们需要先暂存 tmp = pre.next;接着我们将pre.next 指向cur,cur变成指向pre,而pre指向tmp,我们暂存的节点。
3.当原链表遍历完之后结束。

python3解法:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
        if not head:
            return None
        cur = None
        pre = head
        while pre:
            tmp = pre.next
            pre.next = cur
            cur = pre
            pre = tmp
        return cur

Java解法:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode currentNode = head;
        ListNode reverseHead = null;
        ListNode preNode = null;
        while(currentNode != null)
        {
            ListNode nextNode = currentNode.next;
            if ( nextNode == null) reverseHead = currentNode;
            currentNode.next = preNode;
            preNode = currentNode;
            currentNode = nextNode;
        }
        return reverseHead;
    }
}

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/solution/fan-zhuan-lian-biao-yi-dong-de-shuang-zhi-zhen-jia/

相关文章

  • leetcode面试top(3链表)

    24. 反转链表[https://leetcode-cn.com/problems/fan-zhuan-lian-...

  • 面试题24. 反转链表

    题目描述: 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 限制: 思路: py...

  • 面试题24. 反转链表

    题目 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 限制: 0 <= 节点个数...

  • 面试题24. 反转链表

    反转链表 题目描述 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点 示例: 输入: 1->...

  • 面试题24. 反转链表

    https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof...

  • Day1 翻转链表+数组中重复的数字+链表中倒数第k个节点

    剑指 Offer 24. 反转链表(简单)[https://leetcode-cn.com/problems/fa...

  • 剑指 Offer 24 反转链表

    剑指 Offer 24. 反转链表[https://leetcode-cn.com/problems/fan-zh...

  • 反转链表

    《剑指offer》面试题24:输入一个链表,反转链表后,输出新链表的表头。 思路:反转链表就是将链表中每一个节点的...

  • 链表

    一、目录 206.反转链表 24.两两交换链表中的节点 25.K 个一组翻转链表(hard) 234.回文链表 1...

  • 24.反转链表

    思路:设置多个指针,指向相关节点即可 代码:

网友评论

      本文标题:面试题24. 反转链表

      本文链接:https://www.haomeiwen.com/subject/qlqqhhtx.html