LeetCode - Java 206 反转链表
发布日期:2021-06-20 05:37:27 浏览次数:7 分类:技术文章

本文共 1030 字,大约阅读时间需要 3 分钟。

题目描述

206#反转链表

反转一个单链表。

示例:

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

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

 

解法:

1. 迭代  -- 头插法

 

/** * 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 root = null;                while(head!=null){            ListNode temp = head; //获取头结点            head=head.next;            temp.next=root;     //头插新链表            root=temp;        }        return root;    }}

方法二:递归法

从尾部开始逆转,每次将前一个节点插到已经逆转好的尾部。

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */class Solution {    public ListNode reverseList(ListNode head) {        if(head==null) return null;        if(head.next==null) return head;        ListNode second =head.next;        ListNode rest=reverseList(second);        second.next=head;        head.next=null;        return rest;    }}

 

转载地址:https://blog.csdn.net/h2453532874/article/details/90901323 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:@Resource 和 @Autowire 的区别
下一篇:LeetCode 215. 数组中的第K个最大元素

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月05日 00时31分42秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章