当前位置: 首页 > wzjs >正文

重庆做网站 外包公司有哪些做网站功能需要注意什么

重庆做网站 外包公司有哪些,做网站功能需要注意什么,短视频素材库免费下载无水印,温州设计集团有限公司官网文章目录 摘要描述题解答案题解代码分析核心点解释: 示例测试及结果时间复杂度空间复杂度总结未来展望 摘要 在做算法题的时候,树相关的题总是“神神叨叨”的,但其实抓住核心规则,它们也挺有逻辑的。今天这题——LeetCode 255&am…

在这里插入图片描述
在这里插入图片描述

文章目录

    • 摘要
    • 描述
    • 题解答案
    • 题解代码分析
      • 核心点解释:
    • 示例测试及结果
    • 时间复杂度
    • 空间复杂度
    • 总结
    • 未来展望

摘要

在做算法题的时候,树相关的题总是“神神叨叨”的,但其实抓住核心规则,它们也挺有逻辑的。今天这题——LeetCode 255,考的就是:给你一段前序遍历序列,问你它能不能构成一个合法的二叉搜索树(BST)?

这题我们会用 Swift 写一个“靠谱”的解法,边讲边拆解,最后还有可运行的 Demo 方便你直接跑。

描述

原题是这样说的:

给你一个整数数组 preorder,请判断它是否是某个二叉搜索树的前序遍历结果。

前序遍历的定义我们都知道:根 -> 左 -> 右

而二叉搜索树(BST)的规则也耳熟能详:左子树所有节点小于根节点,右子树所有节点大于根节点

所以这题换句话说就是:你要判断一个数组是否满足“BST 的前序遍历规则”。

题解答案

我们可以用一个“单调栈”来模拟这个过程:

  1. 遍历这个 preorder 数组,

  2. 用一个栈保存“还没处理完的子树的根节点”,

  3. 每次碰到一个比栈顶小的元素,就是还在当前根节点的左子树;

  4. 一旦碰到比栈顶大的元素,就说明该进入右子树了,要不断 pop 栈直到找到合适的“祖先”节点。

顺带维护一个变量 low,记录当前子树的下界,如果某个元素比这个 low 还小,那就说明不合法。

题解代码分析

func verifyPreorder(_ preorder: [Int]) -> Bool {var stack = [Int]()var low = Int.minfor value in preorder {if value < low {return false}while let last = stack.last, value > last {low = stack.removeLast()}stack.append(value)}return true
}

核心点解释:

  • low 表示当前节点必须大于的下界(来自之前 pop 出的根节点);

  • stack 模拟一个路径栈,遇到“回到右子树”的场景时就一直 pop;

  • 如果出现了比 low 还小的值,就说明“回到了左边”,是非法的 BST 遍历。

示例测试及结果

print(verifyPreorder([5, 2, 1, 3, 6]))  // true
print(verifyPreorder([5, 2, 6, 1, 3]))  // false

解释:

  • 第一组 [5,2,1,3,6] 是合法的 BST 前序遍历;

  • 第二组中 6 后出现了 1,说明它跑到了右子树再回到左边,是非法的。

时间复杂度

  • 遍历每个节点一次,O(n)

  • 每个节点最多 push 和 pop 一次,O(n)

  • 所以总体复杂度:O(n)

空间复杂度

  • 最坏情况下栈里可能有 n 个节点(递增序列),所以:O(n)

总结

这道题说简单也不简单,说复杂也不复杂。它没有让你去构建真正的树结构,而是让你模拟前序遍历的判断过程。只要理解了“左子树 < 根 < 右子树”的 BST 特性,用一个栈就能轻松解决。

这类题在实际应用场景里也不是纸上谈兵,比如:

  • 代码解析器:校验表达式语法是否合法;

  • 编译器优化:判断语法树结构;

  • 数据库索引构建:模拟 B+ 树或 AVL 树结构。

未来展望

如果你能搞懂这题,后续可以挑战一些更硬核的题,比如:

  • 构建 BST 并打印所有路径;

  • 给定后序遍历判断合法性;

  • 还可以去了解一下 AVL 树、红黑树的构造和旋转逻辑。


文章转载自:

http://Vi2zpSLF.yskhj.cn
http://iMj54Tsh.yskhj.cn
http://ClJVgZcD.yskhj.cn
http://6tH7rfL1.yskhj.cn
http://oadWhoIL.yskhj.cn
http://I7LEBBTy.yskhj.cn
http://baS3gx0R.yskhj.cn
http://oP27G1xn.yskhj.cn
http://L3qsM0RV.yskhj.cn
http://jexi8ick.yskhj.cn
http://jUyIW9Ix.yskhj.cn
http://1drU3z3m.yskhj.cn
http://blgcenDj.yskhj.cn
http://y9AZ2I9t.yskhj.cn
http://FSuvMXTN.yskhj.cn
http://3JtEXBpT.yskhj.cn
http://OAWZfbta.yskhj.cn
http://RhWv1qLE.yskhj.cn
http://dMpOFfpb.yskhj.cn
http://SCAYb34i.yskhj.cn
http://fWR7YQ4w.yskhj.cn
http://RlHTA2Lj.yskhj.cn
http://NsFpnMJB.yskhj.cn
http://QBwqLupm.yskhj.cn
http://uMUkeXGF.yskhj.cn
http://2Kgszd5d.yskhj.cn
http://MRwWBou3.yskhj.cn
http://rvXrkUaR.yskhj.cn
http://4LjD0n3N.yskhj.cn
http://N5Oufda2.yskhj.cn
http://www.dtcms.com/wzjs/779199.html

相关文章:

  • 公司设计网站推荐四川建设厅网站招聘
  • 网站建设衤首选金手指10做网站有什么关于财务的问题
  • 哪里有卖自己做的网站成都那家做网站好
  • 钻戒网站建设需求龙之向导外贸网站网址
  • 做网站的常识rt-theme 18 wordpress
  • 包头做网站公司哪家好模板建站难度大
  • 深圳建设局投标网站建设银行手机银行网站登录
  • 威海做网站推广的企业网站编辑年终总结
  • 正规网站建设费用微信商城小程序开发一般需要多少钱
  • 沈阳网站建设电话平面设计公司工作室
  • wordpress站群主机开发公司工程项目经理岗位职责及工作内容
  • 延庆县专业网站制作网站建设做百度网站优化多少钱
  • 跨境自建站模板wordpress数据库命名
  • 大学网站建设目标公司简介模板免费ppt下载
  • 网站开发外包业务怎么接电商网站的模块
  • 网站开发软件标书范本佛山做网站3000
  • 大连开发网站建设梦幻西游网页微信版
  • 郑州企业建设网站有什么用江门市骏业纸制品有限公司
  • 网站代码输入完成之后要怎么做网商之窗挂
  • 怎么做外贸网站的邮箱签名wordpress主题 虎嗅
  • 横琴新区公共建设局网站基础展示型网站
  • 网站制作找云优化希音跨境电商官网
  • 县网站建设运维情况自查报告秦皇岛做网站公司
  • 济南哪里有网站公司php 公司网站源码
  • 做影视网站该怎么发展公司做的网站访问很慢
  • 自助建站系统有什么好处营销型网站建站教程
  • 英文网站用什么字体好网页设计模板word
  • jsp网站建设作业邳州网站建设
  • 江苏备案网站名称佛山百度快照优化排名
  • 舟山网站建设设计福州网站设计软件公司