LeetCode 每日一题 2024/2/19-2024/2/25
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步
目录
- 2/19 590. N 叉树的后序遍历
- 2/20 105. 从前序与中序遍历序列构造二叉树
- 2/21 106. 从中序与后序遍历序列构造二叉树
- 2/22 889. 根据前序和后序遍历构造二叉树
- 2/23 2583. 二叉树中的第 K 大层和
- 2/24 2476. 二叉搜索树最近节点查询
- 2/25 235. 二叉搜索树的最近公共祖先
2/19 590. N 叉树的后序遍历
左右根 栈实现
mem记录节点是否已被处理
class Node(object):def __init__(self, val=None, children=None):self.val = valself.children = childrendef postorder(root):""":type root: Node:rtype: List[int]"""st = [root]if not root:return []ans = []mem=set()while st:node = st[-1]if len(node.children)==0 or node in mem:ans.append(node.val)st.pop()continuest.extend(reversed(node.children))mem.add(node)return ans
2/20 105. 从前序与中序遍历序列构造二叉树
根据先序遍历 根左右 确定根节点
再根据中序遍历中根节点位置 将左右子树分开
class TreeNode(object):def __init__(self, x):self.val = xself.left = Noneself.right = Nonedef buildTree(preorder, inorder):""":type preorder: List[int]:type inorder: List[int]:rtype: TreeNode"""n = len(inorder)indic = dict(zip(inorder,range(n)))def create(i, j):if i > j: return Noneroot = TreeNode(preorder.pop(0))iroot = indic[root.val]root.left = create(i,iroot-1)root.right = create(iroot+1, j)return rootreturn create(0, n - 1)
2/21 106. 从中序与后序遍历序列构造二叉树
根据后序遍历 中序遍历 生成树
从后续遍历最后确定根节点
在中序遍历中 将根节点左右子树分开
class TreeNode(object):def __init__(self, x):self.val = xself.left = Noneself.right = Nonedef buildTree(inorder,postorder):""":type preorder: List[int]:type inorder: List[int]:rtype: TreeNode"""if len(postorder)==0 or len(inorder)==0:return Nonen = len(inorder)indic = dict(zip(inorder,range(n)))def create(i, j):if i > j: return Noneroot = TreeNode(postorder.pop())iroot = indic[root.val]root.right = create(iroot+1, j)root.left = create(i, iroot-1)return rootreturn create(0, n - 1)
2/22 889. 根据前序和后序遍历构造二叉树
前序 根左右
后续 左右根
前序根后一个为左子树的根 在后续中找到这个根可以划分左右子树
class TreeNode(object):def __init__(self, x):self.val = xself.left = Noneself.right = Nonedef constructFromPrePost(preorder, postorder):""":type preorder: List[int]:type inorder: List[int]:rtype: TreeNode"""def create(pre, post):if len(pre)==0 or len(post)==0:return Nonen = len(pre)if n==1:return TreeNode(post[0])leftsize = post.index(pre[1])+1left = create(pre[1:1+leftsize],post[:leftsize])right = create(pre[1+leftsize:],post[leftsize:-1])return TreeNode(pre[0],left,right)return create(preorder,postorder)
2/23 2583. 二叉树中的第 K 大层和
BFS 计算每一层的和
最小堆存储最大的K个和
class TreeNode(object):def __init__(self, x):self.val = xself.left = Noneself.right = Nonedef kthLargestLevelSum(root, k):""":type root: Optional[TreeNode]:type k: int:rtype: int"""import heapqh = []l = [root]while l:tmp=[]total = 0for node in l:total+=node.valif node.left:tmp.append(node.left)if node.right:tmp.append(node.right)if len(h)<k or h[0]<total:heapq.heappush(h,total)if len(h)>k:heapq.heappop(h)l=tmp[:]if len(h)<k:return -1return heapq.heappop(h)
2/24 2476. 二叉搜索树最近节点查询
深搜获取节点值 从小到大
二分搜索
class TreeNode(object):def __init__(self, val=0, left=None, right=None):self.val = valself.left = leftself.right = rightdef closestNodes(root, queries):""":type root: Optional[TreeNode]:type queries: List[int]:rtype: List[List[int]]"""import bisectv = []def dfs(node):if not node:returndfs(node.left)v.append(node.val)dfs(node.right)dfs(root)print(v)n = len(v)ans = []for q in queries:j = bisect.bisect_left(v, q)mx = v[j] if j<n else -1if j==n or v[j]!=q:j-=1mn = v[j] if j>=0 else -1ans.append([mn,mx])return ans
2/25 235. 二叉搜索树的最近公共祖先
根据二叉搜索树特性 根节点不可能比两个节点都大 或都小
注意:p,q为节点 不是数值
class TreeNode(object):def __init__(self, x):self.val = xself.left = Noneself.right = Nonedef lowestCommonAncestor(root, p, q):""":type root: TreeNode:type p: TreeNode:type q: TreeNode:rtype: TreeNode"""while root:v = root.valif v<p.val and v<q.val:root = root.rightelif v>p.val and v>q.val:root = root.leftelse:return root
相关文章:
LeetCode 每日一题 2024/2/19-2024/2/25
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 2/19 590. N 叉树的后序遍历2/20 105. 从前序与中序遍历序列构造二叉树2/21 106. 从中序与后序遍历序列构造二叉树2/22 889. 根据前序和后序遍历构造二叉树2/23 2583. 二叉…...

Javaweb之SpringBootWeb案例之配置优先级的详细解析
1. 配置优先级 在我们前面的课程当中,我们已经讲解了SpringBoot项目当中支持的三类配置文件: application.properties application.yml application.yaml 在SpringBoot项目当中,我们要想配置一个属性,可以通过这三种方式当中…...
GO框架基础 (三)、xorm库
xorm介绍 官网:https://xorm.io/ git文档:https://github.com/go-xorm/xorm xorm 是一个 Go 语言的 ORM(对象关系映射)库,它提供了一种简单、高效的方式来将 Go 语言中的结构体与数据库表进行映射,并提供了…...
神经网络系列---回归问题和分类问题
文章目录 回归问题和分类问题回归问题:分类问题:多分类问题:排序问题:自定义损失函数: 回归问题和分类问题 回归问题: 回归问题是一种预测连续数值输出的任务。在这种问题中,模型的目标是根据…...
Jetpack Compose 与 Kotlin 的兼容性对应关系
点击查看:Jetpack Compose 教程 点击查看:Jetpack Compose Kotlin 的兼容性 官网 声明依赖项 如需添加 Compose Compiler 的依赖项,您必须将 Google Maven 代码库添加到项目中。如需了解详情,请参阅 Google 的 Maven 代码库。 …...

汇编反外挂
在软件保护领域,尤其是游戏保护中,反外挂是一个重要的议题。外挂通常指的是一种第三方软件,它可以修改游戏数据、操作游戏内存或提供其他作弊功能,从而给玩家带来不公平的优势。为了打击外挂,游戏开发者会采取一系列措…...

134 Linux 系统编程11 ,readlink命令,文件目录rwx权限差异,目录操作函数
一 readlink 命令 前面知道,如果a.soft是一个软链接,我们使用 cat a.soft,会直接查看这个软链接指向的文件 那么我们就是想看这个软链接是啥,可以使用 readlink a.soft 二 获取工作目录 getcwd函数 获取进程当前工作目录 (卷3,标…...

仿12306校招项目业务二(列车检索)
目录 验证数据 加载城市数据 查询列车站点信息 查询列车余票信息 构建列车返回数据 12306 项目中列车数据检索接口路径  TicketController的pageListTicketQuery。 GetMapping("/api/ticket-service/ticket/query")public Result<T…...

前端架构: 实现脚手架终端UI样式之ANSI escape code, Chalk, Ora介绍
在脚手架当中实现命令行的UI显示 1 )概述 在命令行中,如果想实现除传统的常规文本以外的内容比如想对字体进行加粗斜体下划线,包括对它改变颜色改变前景色改变后景色等等需要借助一个叫做 ANSI escape code 这样的一个概念它其实是一个标准&…...

platform(驱动层+应用层)实现终端和中断开关点灯
设备树文件添加 myplatform{compatible"hqyj,myplatform";interrupt-parent<&gpiof>;interrupts<8 0>,<7 0>,<9 0>;led1-gpio<&gpioe 10 0>;led2-gpio<&gpiof 10 0>;led3-gpio<&gpioe 8 0>;reg<0x123…...

黑马JavaWeb开发跟学(一)Web前端开发HTML、CSS基础
黑马JavaWeb开发一.Web前端开发HTML、CSS基础 引子、Web开发介绍传统路线本课程全新路线本课程适用人群课程收获一、什么是web开发二、网站的工作流程三、网站的开发模式四、网站的开发技术 前端开发基础一、前端开发二、HTML & CSS2.1 HTML快速入门2.1.1 操作第一步第二步…...

Nest.js权限管理系统开发(四)Swagger API接入
什么是swagger Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务(<https://swagger.io/>)。 它的主要作用是: 1. 使得前后端分离开发更加方便,有利于团队协作 2. 接口的文档在线自动生成…...

(全注解开发)学习Spring-MVC的第三天
全注解开发 第一部分 : 1.1 消除spring-mvc.xml 这些是原来spring-mvc.xml配置文件的内容 <!--1、组件扫描, 使Controller可以被扫描到--><context:component-scan base-package"com.itheima.controller"/><!--2、非自定义的Bean, 文件上传解析器--&…...

设计模式学习笔记 - 面向对象 - 7.为什么要多用组合少用继承?如何决定该用组合还是继承?
前言 在面向对象编程中,有一条非常经典的设计原则:组合优于继承,多用组合少用继承。 为什么不推荐使用继承? 组合比继承有哪些优势? 如何判断该用组合还是继承? 为什么不推荐使用继承? 继承…...

RocketMQ生产环境常见问题分析与总结
RocketMQ生产环境常见问题分析与总结 如何保证消息不丢失 消息丢失场景 对于跨网络的节点可能会丢消息,因为MQ存盘都会先写入OS的PageCache中,然后再让OS进行异步刷盘,如果缓存中的数据未及时写入硬盘就会导致消息丢失 生产端到Broker端Brok…...
前端打包工具的发展历程、思路(grunt,gulp,webpack,vite)
现在前端发展真快,需要学的东西太多了,下面总结下前端打包的发展过程,便于区分和选择学习。 什么是前端打包 前端打包是指将多个JavaScript文件、CSS文件、图片等资源进行合并和优化处理,并输出为一个或多个文件的过程。这样做的目的是减少…...
利用Python将文件夹下多个txt文本写入到同一个excel中(每一个文件占一行)
1、 将文件夹下多个txt文本写入到同一个excel中(每一个文件占一行): # -*- coding: utf-8 -*- import os import pandas as pd# 获取文件夹中的所有txt文件 folder_path rG:\Cygwin\ txt_files [f for f in os.listdir(folder_path) if f.endswith(.t…...

通过Colab部署Google最新发布的Gemma模型
Gemma的简单介绍 Gemma 是一系列轻量级、最先进的开放式模型,采用与创建 Gemini 模型相同的研究和技术而构建。 Gemma 由 Google DeepMind 和 Google 的其他团队开发,其灵感来自 Gemini,其名称反映了拉丁语 gemma,意思是“宝石”…...
spring中@validate注解使用
在 Java 中,我们可以使用注解和 validate 实现对实体类中字段的校验。其中,注解用来定义字段的约束条件,而 validate 则用来进行实际的校验操作。 常用的校验注解包括 NotNull、NotEmpty、Size、Min、Max 等,它们可以帮助我们规定…...
停车场管理(C语言)
【题目描述】停车场管理。设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的先后次序依次从停车场最里面向大门口处停放 (即最先到达的第一辆车停放在停车场的最里面) 。如果停车场已放满n辆车,则以后到达的车…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...

Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...

Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...

中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...

招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...