新闻详情

新闻详情

首页 / 资讯中心 / 详情

DeepSeek LeetCode 109. 有序链表转换二叉搜索树 Scala实现

发布时间:2026/9/26 11:15:51来源:尧图网络
DeepSeek    LeetCode 109. 有序链表转换二叉搜索树 Scala实现
LeetCode 109. 有序链表转换二叉搜索树 — Scala 实现思路转数组 递归构建链表有序BST 中序遍历也有序。最直接的做法把链表值收集到 Array[Int]。递归取中点作为根左右子区间分别构建左右子树自然得到平衡 BST。代码方案一转数组// Definition for singly-linked list.classListNode(var_x:Int0){varnext:ListNodenullvarx:Int_x}// Definition for a binary tree node.classTreeNode(var_value:Int0){varvalue:Int_valuevarleft:TreeNodenullvarright:TreeNodenull}objectSolution{defsortedListToBST(head:ListNode):TreeNode{// 1. 链表转数组valbufscala.collection.mutable.ArrayBuffer.empty[Int]varcurheadwhile(cur!null){bufcur.x curcur.next}valarrbuf.toArray// 2. 递归构建平衡 BSTdefbuild(lo:Int,hi:Int):TreeNode{if(lohi)nullelse{valmid(lohi)1valnodenewTreeNode(arr(mid))node.leftbuild(lo,mid-1)node.rightbuild(mid1,hi)node}}build(0,arr.length-1)}}代码方案二中序遍历模拟空间 O(log n)不额外开数组用可变的链表当前节点指针配合中序递归objectSolution{defsortedListToBST(head:ListNode):TreeNode{// 1. 计算链表长度varn0varpheadwhile(p!null){n1;pp.next}// 用一个可变的当前链表指针模拟中序遍历varcur:ListNodeheaddefbuild(lo:Int,hi:Int):TreeNode{if(lohi)nullelse{valmid(lohi)1// 先构建左子树会消费链表前半部分valleftbuild(lo,mid-1)// 当前链表节点即根valrootnewTreeNode(cur.x)curcur.next root.leftleft// 再构建右子树root.rightbuild(mid1,hi)root}}build(0,n-1)}}复杂度分析方案 时间复杂度 空间复杂度转数组 O(n) O(n)数组中序模拟 O(n) O(log n)递归栈关键点中序模拟的核心先递归左子树此时链表指针 cur 恰好停在当前根位置取完根后指针后移再递归右子树。这样把链表的顺序和BST 的中序顺序对齐无需随机访问。Scala 的 var cur 闭包捕获嵌套函数 build 能直接读写外层 var cur等价于其他语言的 nonlocal / 可变引用写起来比 Rust 简洁很多。1无符号右移取中点避免 (lo hi) 溢出虽然本题范围安全但这是好习惯。推荐方案二空间更优且不依赖额外数组Scala 中可读性也好推荐优先掌握。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

VSCode Markdown插件选型:按场景决策而非功能堆砌 2026/9/26 17:55:04

VSCode Markdown插件选型:按场景决策而非功能堆砌

1. 这个问题背后藏着三个被忽略的真实需求很多人搜“VSCode的Markdown插件哪个好用”,点开一堆评测文章,看完还是装了又卸、卸了又装,最后回到默认预览——不是懒,是根本没搞清自己到底要什么。我用VSCode写技术文档、课程讲义、会…

阅读更多 →
Codex CLI 额度省着用:登录方式、模型选择与 config.toml 配置实战 2026/9/26 17:55:04

Codex CLI 额度省着用:登录方式、模型选择与 config.toml 配置实战

1. 为什么你用 Codex 越用越费:两种工作模式的额度逻辑 先说我的真实经历。上个月我打算清理一个老项目的测试用例,想着这种事顺手交给 Codex 就好。结果干了一天,Codex 的额度肉眼可见地掉了一大截,而实际改动就只有两个函数、三…

阅读更多 →
Codex故障切换实录:Gemini 3.8 Flash替补接入详解 2026/9/26 17:55:04

Codex故障切换实录:Gemini 3.8 Flash替补接入详解

最近这半个多月,我的主力 AI 编程助手从 Codex 临时换成了 Gemini 3.8 Flash。事情起因很简单:Codex 连续抽风,先是 429 限流排队,接着 auth token is unavailable 这种登录态失效的报错,再后来连 ccswitch 的 local p…

阅读更多 →
Codex控不了浏览器?MCP与CDP链路排查详解 2026/9/26 17:55:04

Codex控不了浏览器?MCP与CDP链路排查详解

你问“Codex控不了浏览器”,我第一反应是:先别急着怀疑Codex,也别急着怀疑浏览器,先怀疑中间那个传话的。Codex本身不是一个能直接点按钮的机器人,它是一个会调用工具的智能体。浏览器控制要打通一条很长的链路&#x…

阅读更多 →
Spring Boot校园二手交易平台:从环境搭建到答辩改造全解析 2026/9/26 17:55:04

Spring Boot校园二手交易平台:从环境搭建到答辩改造全解析

开始前的三件事:先把“拿到代码”变成“看懂代码”如果你手里正好是这套 Spring Boot 校园二手交易平台(lca16),我猜你现在最想干的不是看功能介绍,而是赶紧让它跑起来。这个心情我很理解,因为我前后帮几十…

阅读更多 →
Claude代码模板工程:离线可复用的本地化代码生成方案 2026/9/26 17:54:57

Claude代码模板工程:离线可复用的本地化代码生成方案

1. 这不是“Claude官方工具”,而是一套开发者自建的代码模板工程体系你搜“claude-code-templates”时,大概率会撞上一堆报错:unable to connect to anthropic services、failed to connect to api.anthropic.com、unable to locate the code…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉