资讯专栏INFORMATION COLUMN

[LeetCode] #206: Reverse Linked List (递代&递归解法)

RobinQu / 2828人阅读

摘要:原题既然问了能否那就把解法总结就是得到下一个节点,更改当前节点指向,将指针往下移动,直到过完整个解法总结是传给两个节点,和最开始是和先用存当前节点的,然后把当前节点的指向,然后一直直到过完整个

原题:

Reverse a singly linked list.

click to show more hints.

Hint:
A linked list can be reversed either iteratively or recursively. Could you implement both?

既然问了能否iteratively or recursively, 那就both把.

iterative 解法:

总结就是得到下一个节点,更改当前节点指向,将指针往下移动,直到过完整个linkedlist.

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

recursive 解法:

总结是传给helper method两个节点,cur和pre(最开始是head和null), 先用n1存当前节点的next,然后把当前节点的next指向pre,然后一直recursively call help method直到过完整个linkedlist.

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode reverseList(ListNode head) {
        if(head == null||head.next== null)
            return head;
        return getReverse(head, null);
    }
    
    public ListNode getReverse(ListNode cur, ListNode prev){
        if(cur.next == null){
            cur.next = prev;
            return cur;
        }
        ListNode n1 = cur.next;
        cur.next = prev;
        return getReverse(n1,cur);
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/65666.html

相关文章

  • LeetCode 206:反转链表 Reverse Linked List

    摘要:反转一个单链表。示例输入输出进阶你可以迭代或递归地反转链表。你能否用两种方法解决这道题解题思路每次遍历到最后一位取节点这种方法就算了时间复杂度太高。从链表末尾向头部逐个分离节点,并将节点添加到新链表的末尾。与迭代法原理相似。 反转一个单链表。 Reverse a singly linked list. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2...

    Gilbertat 评论0 收藏0
  • LeetCode 206:反转链表 Reverse Linked List

    摘要:反转一个单链表。示例输入输出进阶你可以迭代或递归地反转链表。你能否用两种方法解决这道题解题思路每次遍历到最后一位取节点这种方法就算了时间复杂度太高。从链表末尾向头部逐个分离节点,并将节点添加到新链表的末尾。与迭代法原理相似。 反转一个单链表。 Reverse a singly linked list. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2...

    heartFollower 评论0 收藏0
  • LeetCode 之 JavaScript 解答第206题 —— 反转链表(Reverse Link

    摘要:算法思路两种方法一般反转递归法一般解决定义三个指针,分别为,存储当前结点,指向反转好的结点的头结点,存储下一结点信息。递归法重点分析先确定终止条件当下一结点为时,返回当前节点判断当前的链表是否为递归找到尾结点,将其存储为头结点。 Time:2019/4/23Title: Reverse Linked ListDifficulty: EasyAuthor: 小鹿 题目:Reverse...

    zhangfaliang 评论0 收藏0
  • [Leetcode] Reverse Linked List 链表反转(递归与非递归

    摘要:代码描述调转指针解法非递归用三个指针,紧紧相邻,不断前进,每次将指向,将指向指向。描述递归解法测试结果 Reverse a singly linked list. 代码ReverseLinkedList.java package list; public class ReverseLinkedList { /** * 描述 Reverse a singly...

    RyanHoo 评论0 收藏0
  • Leetcode PHP题解--D78 206. Reverse Linked List

    摘要:题目链接题目分析给定一个链表,将其倒转过来。思路我的思路是,把每一项存进数组作为栈。遍历完成后,再逐个弹出即可。最终代码若觉得本文章对你有用,欢迎用爱发电资助。 D78 206. Reverse Linked List 题目链接 206. Reverse Linked List 题目分析 给定一个链表,将其倒转过来。 思路 我的思路是,把每一项存进数组作为栈。 遍历完成后,再逐个弹出即...

    Rindia 评论0 收藏0

发表评论

0条评论

RobinQu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<