首页 > 其他分享 >力扣206 反转链表

力扣206 反转链表

时间:2022-11-13 19:35:52浏览次数:44  
标签:pre 力扣 head ListNode cur 206 链表 null

题目:

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

示例:

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

 

双指针法:

两个指针,cur指向当前节点,用来遍历,pre指向上一节点。

null 1 2 3 4 5
pre cur        

cur在前面走,把指针甩向上一节点。最终返回反转链表头结点pre。

1 2 3 4 5 null
        pre cur

 

class Solution {
   public ListNode reverseList(ListNode head) {
        ListNode pre = null;
        ListNode cur = head;
        ListNode temp = null;
        while (cur != null) {
            temp = cur.next;// 保存下一个节点
            cur.next = pre;// 当前节点指向前一节点
            //往前走一步
            pre = cur; 
            cur = temp;
        }
        return pre;//此时pre指向反转链表头结点,返回反转后的链表
    }
}

 

递归法:

class Solution {
   public ListNode reverseList(ListNode head) {
       return reverse(null,head);//第一层:pre=null,cur=head
    }

    public ListNode reverse(ListNode pre, ListNode cur){
        if(cur==null){
            return pre;//返回反转链表
        }
        ListNode temp=null;
        temp=cur.next;
        cur.next=pre;
        return reverse(cur,temp);//第n层:pre=cur,cur=temp
    }
}

 

标签:pre,力扣,head,ListNode,cur,206,链表,null
From: https://www.cnblogs.com/cjhtxdy/p/16886663.html

相关文章

  • 21. 合并两个有序链表 ----- 递归调用、链表指针
    将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。  示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]示例......
  • 力扣 74. 搜索二维矩阵
    74.搜索二维矩阵编写一个高效的算法来判断 mxn 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一......
  • 剑指 Offer 41. 数据流中的中位数 - 力扣(Leetcode)
    剑指Offer41.数据流中的中位数-力扣(Leetcode)分析维护两个堆,一个大根堆,一个小根堆。插入操作:当进行插入时,先判断大根堆中是否有元素,如果没有直接插入大根堆,若有......
  • 力扣35(java&python)-搜索插入位置(简单)
    题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为O(logn)的算法......
  • 剑指 Offer 59 - I. 滑动窗口的最大值 - 力扣(Leetcode)
    剑指Offer59-I.滑动窗口的最大值-力扣(Leetcode)一.分析方法一:数组长度为1e5,k的大小为1e4,因此直接暴力计算会TLE。我们可以思考一个更复杂的问题:询问任意区间中的......
  • 单链表的算法
    单链表的算法先进先出单链表(尾插法)首先我们要知道什么是先进先出:每次插入的新元素,都是插在表尾。就比如饭堂打饭排队的时候,第一个打饭的人往往是第一个离开的,以此类推,最......
  • HTML-链表标签和块标签
    链表标签a:定义一个超链接属性:href:指定访问资源的URL(统一资源定位符)target:指定打开资源的方式_self:默认值,在当前页面打开_blank:在空白页面打开......
  • I/O多路复用器,数组、链表、红黑树
    IO多路复用指的是单个进程或者线程能同时处理多个IO请求,select,epoll,poll是LinuxAPI提供的复用方式。本质上由操作系统内核缓冲IO数据,使得单个进程线程能监视多个文件描述符......
  • 编写C程序,实现单链表的下列功能: 1、从键盘输入一组数据,创建单链表; 2、输出单链表; 3、
    编写C程序,实现单链表的下列功能:1、从键盘输入一组数据,创建单链表;2、输出单链表;3、插入元素,给出插入成功或失败的信息;4、删除元素,给出删除成功或失败的信息。#incl......
  • 力扣707 设计链表
    题目:设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val和next。val是当前节点的值,next是指向下一个节点的指针/引用。如果要使用双......