首页 > 其他分享 >反转链表

反转链表

时间:2023-02-13 22:34:02浏览次数:41  
标签:head end 反转 结点 next 链表 start

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表

 

输入:head = [1,2,3,4,5]

输出:[5,4,3,2,1]

 

tips:

  • 链表中节点数的数目范围 [0,5000]
  • -5000 <= Node.val <= 5000

 

方法1——双指针迭代

 1 class Solution {
 2     public ListNode reverseList(ListNode head) {
 3 
 4         //双指针
 5         //创建结点,先结点start指向head,后结点end指向null
 6         ListNode start = head, end = null;
 7         //循环迭代
 8         while(start != null){
 9             //临时结点保存下结点值
10             ListNode tmp = start.next;
11             //当前结点指向end开始反转
12             start.next = end;
13             //start和end都向前移动
14             end = start;
15             start = tmp;
16         }
17         return end;
18     }
19 }

方法2——递归

 1 class Solution {
 2     public ListNode reverseList(ListNode head) {
 3 
 4         //递归条件:当前结点为空或者下结点为空
 5         if(head == null || head.next == null){
 6             return head;
 7         }
 8         //申请结点end指向链表最后一个结点
 9         ListNode end = reverseList(head.next);
10         //重新指向
11         head.next.next = head;
12         //防止链表循环,需吧head.next设置为null
13         head.next = null;
14         //每层递归函数都返回end,也就是最后一个结点
15         return end;
16 
17     }
18 }

 

标签:head,end,反转,结点,next,链表,start
From: https://www.cnblogs.com/wuli-Zhang/p/17118088.html

相关文章

  • 如何理解spring框架中的依赖注入和控制反转?
     ioc,InversionofControl(控制反转),是Spring中的一种设计思想而非技术。我们可以从4个方面理解ioc:①谁控制谁?——Ioc容器控制对象。②控制了什么?——Ioc容器控......
  • LeetCode-83. 删除排序链表中的重复元素(java)
    一、前言:......
  • 插入有序的单链表(要求插入后元素有序排列)
    问题引入:某校实验室有一批计算机,按其价格从低到高的次序构成了一个单链表存放,链表中每个结点指出同样价格的若干台。现在又增加m台价格为h元的计算机,编程实现实验室计......
  • 两个单向循环链表的合并(带头结点)
    两个单向循环链表的合并(带头结点)问题引入:已知两个带头结点的单向循环链表,LA和LB分别是链表的头指针,LA=(a1,a2…am),LB=(b1,b2,…bm),编写算法,将LA和LB合并成一个单......
  • 两个非递增的有序链表的合并
    两个非递增的有序顺序表的合并一、问题引入:已知两个带头结点的非递增有序的单链表A和B,设计算法将两个单链表合并成一个非递增有序的单链表C.要求单链表C仍使用原来......
  • 蓝桥杯链表总结(3)
    力扣链表相关题目反转链表题目:给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例1:输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]示例2:输入:head=[1,2]......
  • java: 小王子单链表 ------ ( LinkedList )
    java.util包中的LinkedList<E>泛型类创建的对象以链表结构存储数据,习惯上称LinkedList类创建的对象为链表对象。LinkedList<String>myList=newLinkedList<String>(......
  • LeetCode算法题二——合并两个有序链表
    题目给你一个非空整数数组nums,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问......
  • 算法刷题-插入区间、杨辉三角、移除链表元素
    插入区间给你一个无重叠的,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。示例1:输入......
  • 环形链表I、II(含代码以及证明)
    环形链表解题思路定义两个指针,一个快指针,一个慢指针,快指针每次移动两个节点,慢指针每次移动一个节点。从头节点开始,让快慢指针同时移动,如果链表中有环,那么快慢指针一定......