反转链表(LeetCode)

news2024/10/2 14:27:53

题目

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

解题

class ListNode:
    def __init__(self, value=0, next=None):
        self.value = value
        self.next = next


def reverse_linked_list_recursive(head: ListNode) -> ListNode:
    # 空链表或单节点链表
    if not head or not head.next:
        return head

    # 递归反转子链表
    new_head = reverse_linked_list_recursive(head.next)

    # 处理当前节点
    head.next.next = head
    head.next = None

    return new_head


# 辅助函数:创建链表
def create_linked_list(elements):
    if not elements:
        return None
    return ListNode(elements[0], create_linked_list(elements[1:]))


# 辅助函数:打印链表
def print_linked_list(head: ListNode):
    current = head
    while current:
        print(current.value, end=" -> " if current.next else "\n")
        current = current.next


# 测试代码
if __name__ == '__main__':
    # 创建链表: 1 -> 2 -> 3 -> 4 -> 5
    elements = [1, 2, 3, 4, 5]
    head = create_linked_list(elements)

    print("原始链表:")
    print_linked_list(head)

    reversed_head = reverse_linked_list_recursive(head)

    print("反转后的链表:")
    print_linked_list(reversed_head)

 原始链表:
1 -> 2 -> 3 -> 4 -> 5
反转后的链表:
5 -> 4 -> 3 -> 2 -> 1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1979196.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Material-UI】Autocomplete组件的自定义功能(Customization)详解

文章目录 一、定制输入框二、全局自定义选项三、特定场景的自定义1. GitHub标签选择器2. 提示功能 四、总结 在现代Web开发中,UI组件的可定制性是提升用户体验和界面一致性的重要因素。Material-UI的Autocomplete组件提供了丰富的自定义选项,使得开发者可…

调试工具之GDB的基本使用

GDB基本使用 GDB是Linux下一款非常强大的调试软件&#xff0c;其实就是GNU Debugger的缩写。接下来我们学习一下他的基本使用。 例子函数&#xff0c;其中只有一个ds18b20的采集温度函数和一个主函数&#xff1a; #include <stdio.h> #include <errno.h> #includ…

一些硬件知识(十九)

立创的这个功能&#xff0c;绕等长线时候真的好用到o(╥﹏╥)o&#xff1a; 设计完成后一定要有一个最小工艺安全间距的DRC检查&#xff0c;不然的话又会出现嘉立创反馈短路&#xff0c;或者工艺生产不了&#xff1a; PMOS防反接电路&#xff1a; 理分析&#xff1a;当输入端加…

【两数之和 II - 输入有序数组】python刷题记录

R3-二分查找 双指针简单题 class Solution:def twoSum(self, numbers: List[int], target: int) -> List[int]:#双指针法i0jlen(numbers)-1while i<j:snumbers[i]numbers[j]if s>target:j-1elif s<target:i1else:return i1,j1return []

react-native从入门到实战系列教程一InputText组件之登录表单

登录使我们业务中不可缺少的功能&#xff0c;所以这篇我们学习写在react-native中实现表单登录 实现效果 代码实现 import {View,Text,StyleSheet,Dimensions,TextInput,Button,Alert, } from react-native; import {useEffect, useState} from react; import Logo from ../.…

通过systemd-resloved实现不同域名通过不同的`nameserver`进行解析

通过systemd-resloved实现不同域名通过不同的nameserver进行解析 一般来说只要DNS不发生网络故障就只会在一个nameserver 获取地址&#xff0c;但我们可能需要从不同nameserver 获取不同域名的地址&#xff0c;比如内网环境和外网环境分别使用不同的nameserver &#xff0c;但…

中间证书缺失如何发现和修复

一、背景 微信小程序等功能在发送后台请求时一般都会要求证书齐全&#xff0c;否则就会导致请求发送失败。 一般来说&#xff0c;如果中间证书不齐全&#xff0c;在不同设备上表现不一样&#xff0c;一般PC端可能不会有太大问题&#xff0c;仍然认为你的证书可信&#xff0c;但…

shell实用笔记

目录 一、基本语法 1. 基础知识 2. if判断 3. 循环遍历 介绍一个{ n1..n2 }, seq -s分隔符 n1 n2. 4. 函数脚本传参 结果会是如何&#xff1f; 5. 字符串常规操作 6. 字符串处理&#xff1a;awk、sed、tr。留着下次&#xff0c;太多了 一、基本语法 1. 基础知识 shel…

SSM网上考试系统—计算机毕业设计源码12795

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#xff0c;应用软件的工作…

后端学习笔记(3)--Maven

1.Maven ​ *专门用于管理和构建Java项目的工具&#xff0c;主要功能有&#xff1a; ​ 1.提供了一套标准化的项目结构 ​ 2.提供了一套标准化的构建流程(编译&#xff0c;测试&#xff0c;打包&#xff0c;发布) ​ 3.提供了一套依赖管理机制 1.简介 ​ *Apache Maven是一…

三分钟了解自动驾驶中视觉Transform应用:视觉Transoform自动驾驶综述

引言 Transformer技术在自然语言处理领域取得突破&#xff0c;催生了BERT、GPT和T5等模型。它在计算机视觉中也显示出潜力&#xff0c;尤其在自动驾驶领域&#xff0c;Transformer在物体检测、车道检测和分割等关键任务中替代了传统CNN和RNN&#xff0c;与强化学习结合用于路径…

秒懂Linux之gdb调试

目录 ​ 一. 前情提要 二. 相关命令 2.1 l 行号/函数名 2.2 r 2.3 b 2.4 info break 2.5 d 2.6 disable/enable 2.7 n 2.8 s 2.9 p 2.10 display/undisplay 2.11 c 2.12 bt 2.13 finish 2.14 untill 2.15 set var 三. 总结 一. 前情提要 Linux gcc/g出来的二…

100379.新增道路查询后的最短距离I

今天看到很有意思的一个题目&#xff0c;记录下来&#xff0c;供大家参考 题目描述 解题思路 为了解决这个问题&#xff0c;我们需要处理一系列的单向道路添加操作&#xff0c;并在每次添加后计算从城市 0 到城市 n-1 的最短路径长度。由于初始时每个城市 i 都有一条到 i1 的…

【C++高阶】:C++11的深度解析下

✨ 彼方尚有荣光在&#xff0c;何须悲叹少年轻 &#x1f30f; &#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;C学习 &#x1f680; 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&…

浅谈 Spring AOP框架 (1)

文章目录 一、什么是 Spring AOP二、为什么要使用 Spring AOP三、AOP 的一些应用场景四、AOP 的组成五、如何使用 Spring AOP六、Spring AOP 的实现原理6.1、JDK 和 CGLIB 的区别 一、什么是 Spring AOP AOP (Aspect Oriented Programming) &#xff1a;面向切面编程&#xff…

[CTF]-PWN:格式化字符串漏洞题综合解析

printf型格式化字符串漏洞&#xff1a; 任意地址写&#xff1a; 32位&#xff1a; 例题&#xff08;inndy_echo&#xff09;&#xff1a; 有格式化字符串漏洞&#xff0c;可以修改printf的got表内地址为system&#xff0c;传参getshell 解法一&#xff1a; 在32位中可以使…

C语言 操作符

操作符分多种&#xff1a;算术操作符&#xff0c;移位操作符&#xff0c;位操作符&#xff0c;赋值操作符&#xff0c;单目操作符&#xff0c;关系操作符&#xff0c;逻辑操作符&#xff0c;条件操作符&#xff0c;逗号表达式&#xff0c;下标引用&#xff0c;函数调用和结构成…

【Web开发手礼】探索Web开发的秘密(十四)-Vue2(1)Node.js的安装、Vue入门

主要介绍了Node.js的安装教程、Vue2常用的一些指令、声明周期&#xff01;&#xff01;&#xff01; 文章目录 前言 Node.js安装 选择安装目录 验证NodeJS环境变量 配置npm的全局安装路径 切换npm的淘宝镜像 安装Vue-cli ​编辑 Vue2入门 引入vue.js文件 入门代码 常用指令 生…

眼在手外-机器人坐标系与相机坐标系标定方法

1 眼在手外坐标系概述 实现机械臂和相机的手眼标定&#xff0c;就是要通过双目相机坐标系、机械臂坐标系和机械臂 末端执行器三者的坐标系转换&#xff0c;求出手眼转换矩阵。设双目相机坐标系为 Oc&#xff0c;标定板坐标 系为 Ow&#xff0c;末端执行器坐标系为 Oe&#xff0…

【学习笔记】Day 3

一、进度概述 1、作业1 2、组会会议纪要——没太听懂&#xff0c;得再看 二、详情 1、作业1 &#xff08;1&#xff09;在python中&#xff0c;想要使output为图片&#xff0c;需要用的matplotlib库&#xff0c;这里做简单的整理&#xff0c;以便更好的理解代码。 …