https://leetcode-cn.com/problems/reverse-linked-list/
object Solution {
/**
* 非递归方式
*/
def reverseList(head: ListNode): ListNode = {
if(head == null || head.next == null){
head
}else{
var prev = head
var cur = prev.next
head.next = null
while(cur != null){
val temp = cur.next
cur.next = prev
prev = cur
cur = temp
}
prev
}
}
/**
* 递归实现,相对循环更加难理解
*/
def reverseList(head:ListNode):ListNode={
if(head == null || head.next == null){
head
}else{
val res = reverseList(head.next)
head.next.next = head
head.next = null //特别注意:此处循环不需要
res
}
}
}
相关推荐
【链表系列01】反转链表
一般将单向链表的开始节点叫作 头节点(head),将最后一个节点叫作 尾节点(tail)。其中,head 记录了单向链表的基地址,通过它可以遍历得到整条链表;对于 tail ,因为它已经是最后一个节点了,所以它的 next 指针指向一个空地址 NULL。
scala反转链表 leetcode 206 Reverse Linked List
class ListNode(value:Int) { val v=value; var next:ListNode=null }def reverse(l1: ListNode): ListNode = { var l2=l1; var pre:ListNode=null while (l2!=null){ val tmp=l2.next l2.next=pr
Tushare Day2——了解stock_basic数据并根据行业和地区进行统计
了解stock_basic数据 1 stock_basic基础信息2 导入包和stock_basic数据、查看基本信息3 根据行业列进行统计3.1 1.先把不同行业列举出来,看一下一共有多少种行业3.2 2.统计每个行业分别有多少家公司3.3 3.把行业从array的二维数组形式变成list形式3.4 4.把行业从list形式转换成文本形式3.5 
单链表反转的两种实现方式
面试必问之一 /** * Description:遍历、递归实现单链表反转<br/> * Copyright (c) , 2019, LafreeZhao <br/> * This program is protected by copyright laws. <br/> * Date:2019年03月02日 * * @author 赵炳泉
超螺旋滑模控制(STA)
超螺旋滑模控制又称超扭滑模控制,可以说是二阶系统中最好用的滑模控制方法。
无法获得下列放可solidworks standard 无法连接到服务器-15,10,10061如何解决?
无法获得下列放可solidworks standard 无法连接到服务器-15,10,10061如何解决?
图解反转单向链表
我总觉的反转链表的过程不是那么好理解,花了点时间画图来帮助理解
UE5摄像机抖动全攻略:从Perlin噪点到Sequence实战(附参数调优技巧)
本文深入解析UE5摄像机抖动技术,从Perlin噪点算法到CameraShakeBase蓝图应用,再到Sequence高级控制,提供全面的参数调优技巧。涵盖战斗、爆炸等场景的预设参数,帮助开发者实现专业级抖动效果,提升游戏沉浸感。
单链表反转
单链表反转是链表的一种基本操作。网上看了一些文章,介绍的还是都很详细。自己也尝试着写了一些代码,调试通过。链表的反转方法有很多种。采用游标指针遍历,修改next指针是常用的方法。一般地,需要定义三个指针,比如本文中,定义为 Node *cur,*pNext,*pre; 其中,cur用来保存反转后的头指针;pNext是游标,用来遍历链表并将各个节点的next指针值修改为前一个节点地址;而pre...
AFSim2.9.0学习笔记 —— 2、AFSim的Wizard软件概述(ArkSIM集成开发环境 (IDE))
AFSim2.9.0学习笔记 —— 2、AFSim的Wizard软件详述(ArkSIM集成开发环境 (IDE))
【TC3xx芯片】TC3xx芯片PFlash的ECC校验问题补充
TC3xx芯片PFlash的ECC校验问题补充
Leetcode206. 反转链表
Leetcode206. 反转链表 题目: 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 题解: 将当前节点的指针指向上一个节点 然后更新当前节点和下一个节点的值即顺移 scala代码如下: /** * * @param head ...
Python爬虫实战:基于Scrapy与Playwright的搜狐新闻高效爬取
在当今信息爆炸的时代,网络爬虫技术已成为数据获取和分析的重要工具。作为国内领先的新闻门户网站,搜狐新闻包含了大量有价值的新闻数据,这些数据对于舆情分析、市场研究等领域具有重要意义。本文将详细介绍如何使用Python最新的爬虫技术栈(Scrapy框架结合Playwright浏览器自动化工具)来高效爬取搜狐新闻数据。pythontitle = scrapy.Field() # 新闻标题url = scrapy.Field() # 新闻链接。
链表反转原理与实现:面试必考技术解析
链表作为基础数据结构,通过指针域实现动态内存管理,其核心操作涉及指针重定向与节点关系维护。反转链表通过改变指针方向实现倒序排列,既考察指针操作基本功,又体现递归/迭代的算法思维。在工程实践中,该技术广泛应用于浏览器历史记录管理、消息队列处理等场景。以LeetCode 206题为典型案例,迭代法通过prev/curr/next三指针实现O(1)空间复杂度,而递归法则以O(n)栈空间为代价简化代码逻辑。大厂面试常以此题检验边界处理能力,约40%候选人会忽略指针丢失或成环问题。掌握链表反转对理解区块链、文本编辑器
VB摄像头监控
该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制
jre9下载 jdk9
(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】
scala数据结构(四):链表
文章目录链表单向链表 链表 链表是一种有序列表.其中的各对象按线性顺序排列 数组的线性顺序是由数组下标决定的,而链表的顺序是由各个对象里的指针决定的 使用链表结果可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分使用计算机内存空间,灵活的内存动态管理,但是链表失去了数组随机读取的优点,同时链表由于增加了节点的指针域,空间开销比较大 链表作为一种基础的数据结构,可以用来生成其他类型的数据结构,可以分为单向链表,双向链表,循环链表 单向链表 单向链表是最简单的链表,它包含两个域,一个是信息域,一个是指
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
scala反转字符串_Scala程序反转字符串
scala反转字符串 反转字符串 (Reversing a string) Logically, reversing is swapping the values from index 1 with index n, index 2 with index n-1, and so on. 从逻辑上讲,反向是将索引1中的值与索引n交换,将索引2中的值与索引n-1交换,依此类推。 So, if th...
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
反转链表-四种方法
反转链表 链接 题目:描述 给定一个单链表的头结点head,长度为n,反转该链表后,返回新链表的表头。 以上转换过程如下图所示: 示例1 输入: {1,2,3} 返回值: {3,2,1} 示例2 输入: {} 返回值: {} 复制 说明: 空链表则输出空 1.迭代法 因为单链表只能由当前节点查找到后一个节点,因此使用迭代法时,需要保存当前节点的后一个节点。 curr 指向链表的当前节点,next 保存curr节点的下一个节点(因为是单链表,不保存的话,改变方向之后就找不到旧节点的
Scala数组反转
object er extends App{ val st = Array[String]("A","B","C") // 数组反转 val r = st.reverse r.foreach(i => { print(i) }) } 运算结果: 注意: reverse 是反转的关键字 ...
倒序输出链表
一、思路 利用栈或者递归来实现链表的倒序 二、代码 /** *倒序输出链表 */ public class Solution2 { public void reverseList(ListNode list) { if(list==null) { return;
206. 反转链表
题目描述: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head = [1,2] 输出:[2,1] 示例 3: 输入:head = [] 输出:[] 提示: 链表中节点的数目范围是 [0, 5000] -5000 <= Node.val <= 5000 进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题? 来...
leetcode:反转字符串(scala)
题目 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例 1: 输入:["h","e","l","l","o"] 输出:["o","l","l","e","h"] 示例...
scala做字符串反转
val oldStr = “1234” var newStr = "" for ( i<-0 until oldStr.length) newStr = oldStr.charAt(i) +newStr
深入理解Scala隐式值:编译期自动装配
用implicit标记一个valdef或object// 隐式val:一个现成的值// 隐式def:需要时才构造(可以带隐式参数,形成链式推导)// 隐式object:单例它们和普通定义没有运行时区别,唯一的区别是——它们被登记进了"隐式候选池",可以被编译器自动取用。隐式值看起来是"让你少写参数",本质上它提供的是一种编译期的、按类型自动装配的机制。工程层面:上下文依赖(执行上下文、配置、序列化器)声明一次自动流转,不用层层透传,缺失和冲突在编译期暴露抽象层面。
深入理解Scala嵌套函数:作用域封装之道
我写这篇文章的时候,特意没罗列嵌套函数有多少种写法——因为写法很简单,谁都能写。嵌套函数为什么重要?辅助逻辑的作用域应该是多大?Java里你写辅助逻辑,只能写到类级别——因为Java的方法必须定义在类级别。但很多辅助逻辑其实只属于某一个函数,不属于整个类。你把它们写到类级别,就造成了作用域放大——本来应该是函数内部的东西,变成了类级别的东西。Scala的嵌套函数把这个问题解决了——辅助逻辑可以精确地封装在主函数内部。它直接访问外层函数的变量,不用把上下文传来传去。它不暴露到类级别,不造成API膨胀。
深入理解Scala隐式函数:自动类型转换
用implicit标记一个单参数的def// 把Celsius转成Fahrenheitval f: Fahrenheit = Celsius(100.0) // 自动转换它和普通函数运行时完全一样,唯一区别是被登记进隐式候选池,允许编译器在需要时自动调用。// Scala 3你必须先,等于明确告诉编译器和读代码的人:“我清楚这里在用隐式转换”。隐式函数(隐式转换)是Scala隐式体系里能力最直接、但也最需要敬畏的一环。
751



被折叠的 条评论
为什么被折叠?



