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

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

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 2/19 590. N 叉树的后序遍历2/20 105. 从前序与中序遍历序列构造二叉树2/21 106. 从中序与后序遍历序列构造二叉树2/22 889. 根据前序和后序遍历构造二叉树2/23 2583. 二叉…...

Javaweb之SpringBootWeb案例之配置优先级的详细解析

1. 配置优先级 在我们前面的课程当中&#xff0c;我们已经讲解了SpringBoot项目当中支持的三类配置文件&#xff1a; application.properties application.yml application.yaml 在SpringBoot项目当中&#xff0c;我们要想配置一个属性&#xff0c;可以通过这三种方式当中…...

GO框架基础 (三)、xorm库

xorm介绍 官网&#xff1a;https://xorm.io/ git文档&#xff1a;https://github.com/go-xorm/xorm xorm 是一个 Go 语言的 ORM&#xff08;对象关系映射&#xff09;库&#xff0c;它提供了一种简单、高效的方式来将 Go 语言中的结构体与数据库表进行映射&#xff0c;并提供了…...

神经网络系列---回归问题和分类问题

文章目录 回归问题和分类问题回归问题&#xff1a;分类问题&#xff1a;多分类问题&#xff1a;排序问题&#xff1a;自定义损失函数&#xff1a; 回归问题和分类问题 回归问题&#xff1a; 回归问题是一种预测连续数值输出的任务。在这种问题中&#xff0c;模型的目标是根据…...

Jetpack Compose 与 Kotlin 的兼容性对应关系

点击查看&#xff1a;Jetpack Compose 教程 点击查看&#xff1a;Jetpack Compose Kotlin 的兼容性 官网 声明依赖项 如需添加 Compose Compiler 的依赖项&#xff0c;您必须将 Google Maven 代码库添加到项目中。如需了解详情&#xff0c;请参阅 Google 的 Maven 代码库。 …...

汇编反外挂

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

134 Linux 系统编程11 ,readlink命令,文件目录rwx权限差异,目录操作函数

一 readlink 命令 前面知道&#xff0c;如果a.soft是一个软链接&#xff0c;我们使用 cat a.soft,会直接查看这个软链接指向的文件 那么我们就是想看这个软链接是啥&#xff0c;可以使用 readlink a.soft 二 获取工作目录 getcwd函数 获取进程当前工作目录 (卷3&#xff0c;标…...

仿12306校招项目业务二(列车检索)

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

前端架构: 实现脚手架终端UI样式之ANSI escape code, Chalk, Ora介绍

在脚手架当中实现命令行的UI显示 1 &#xff09;概述 在命令行中&#xff0c;如果想实现除传统的常规文本以外的内容比如想对字体进行加粗斜体下划线&#xff0c;包括对它改变颜色改变前景色改变后景色等等需要借助一个叫做 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 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务(<https://swagger.io/>)。 它的主要作用是&#xff1a; 1. 使得前后端分离开发更加方便&#xff0c;有利于团队协作 2. 接口的文档在线自动生成&#xf…...

(全注解开发)学习Spring-MVC的第三天

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

设计模式学习笔记 - 面向对象 - 7.为什么要多用组合少用继承?如何决定该用组合还是继承?

前言 在面向对象编程中&#xff0c;有一条非常经典的设计原则&#xff1a;组合优于继承&#xff0c;多用组合少用继承。 为什么不推荐使用继承&#xff1f; 组合比继承有哪些优势&#xff1f; 如何判断该用组合还是继承&#xff1f; 为什么不推荐使用继承&#xff1f; 继承…...

RocketMQ生产环境常见问题分析与总结

RocketMQ生产环境常见问题分析与总结 如何保证消息不丢失 消息丢失场景 对于跨网络的节点可能会丢消息&#xff0c;因为MQ存盘都会先写入OS的PageCache中&#xff0c;然后再让OS进行异步刷盘&#xff0c;如果缓存中的数据未及时写入硬盘就会导致消息丢失 生产端到Broker端Brok…...

前端打包工具的发展历程、思路(grunt,gulp,webpack,vite)

现在前端发展真快&#xff0c;需要学的东西太多了&#xff0c;下面总结下前端打包的发展过程&#xff0c;便于区分和选择学习。 什么是前端打包 前端打包是指将多个JavaScript文件、CSS文件、图片等资源进行合并和优化处理,并输出为一个或多个文件的过程。这样做的目的是减少…...

利用Python将文件夹下多个txt文本写入到同一个excel中(每一个文件占一行)

1、 将文件夹下多个txt文本写入到同一个excel中&#xff08;每一个文件占一行&#xff09;: # -*- 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 是一系列轻量级、最先进的开放式模型&#xff0c;采用与创建 Gemini 模型相同的研究和技术而构建。 Gemma 由 Google DeepMind 和 Google 的其他团队开发&#xff0c;其灵感来自 Gemini&#xff0c;其名称反映了拉丁语 gemma&#xff0c;意思是“宝石”…...

spring中@validate注解使用

在 Java 中&#xff0c;我们可以使用注解和 validate 实现对实体类中字段的校验。其中&#xff0c;注解用来定义字段的约束条件&#xff0c;而 validate 则用来进行实际的校验操作。 常用的校验注解包括 NotNull、NotEmpty、Size、Min、Max 等&#xff0c;它们可以帮助我们规定…...

停车场管理(C语言)

【题目描述】停车场管理。设有一个可以停放n辆汽车的狭长停车场&#xff0c;它只有一个大门可以供车辆进出。车辆按到达停车场时间的先后次序依次从停车场最里面向大门口处停放 (即最先到达的第一辆车停放在停车场的最里面) 。如果停车场已放满n辆车&#xff0c;则以后到达的车…...

207_深度学习调优:透彻理解权重衰退(L2 正则化)

在模型训练中&#xff0c;如果特征过多而数据较少&#xff0c;模型很容易为了拟合每一个样本而产生巨大的权重值&#xff0c;导致过拟合。权重衰退的核心思想就是&#xff1a;通过在损失函数中添加惩罚项&#xff0c;让模型偏好更小的权重。1. 为什么“小权重”能防止过拟合&am…...

5步让Windows 11提速51%:Win11Debloat深度净化指南

5步让Windows 11提速51%&#xff1a;Win11Debloat深度净化指南 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本&#xff0c;用于从Windows中移除预装的无用软件&#xff0c;禁用遥测&#xff0c;从Windows搜索中移除Bing&#xff0c;以及执行各种其他更改以简化和改善…...

Qwen2-VL-2B-Instruct环境配置详解:Anaconda虚拟环境管理与依赖冲突解决

Qwen2-VL-2B-Instruct环境配置详解&#xff1a;Anaconda虚拟环境管理与依赖冲突解决 每次准备跑一个新的大模型&#xff0c;最头疼的往往不是模型本身&#xff0c;而是环境配置。特别是像Qwen2-VL-2B-Instruct这种多模态模型&#xff0c;它需要PyTorch、Transformers、CUDA&am…...

CANopen协议实战指南:从对象字典到PDO映射

1. CANopen协议入门&#xff1a;从零理解工业通信基石 第一次接触CANopen协议时&#xff0c;我被它复杂的术语和抽象的概念搞得晕头转向。直到在某个电机控制项目中被迫深入使用后&#xff0c;才发现这套协议设计得如此精妙。CANopen本质上是一种建立在CAN总线上的应用层协议&a…...

TypeScript实战:手把手教你实现4种不依赖第三方库的UUID生成器(附完整代码)

TypeScript实战&#xff1a;4种零依赖UUID生成器的实现与优化 在小程序开发或特殊环境下&#xff0c;我们常常面临无法使用第三方库的困境。UUID作为分布式系统中唯一标识符的核心组件&#xff0c;其生成逻辑却往往被封装在uuid这样的第三方库中。本文将带你从零实现四种不同格…...

实战调试:段页式内存管理中的首次页故障剖析

1. 段页式内存管理基础概念 段页式内存管理是现代操作系统的核心机制之一&#xff0c;它巧妙结合了分段和分页两种技术的优势。简单来说&#xff0c;就像我们整理衣柜时既按季节&#xff08;分段&#xff09;又用收纳盒&#xff08;分页&#xff09;来管理衣物。CPU看到的线性地…...

Ollama安装路径优化:从C盘迁移到D盘的完整指南

1. 为什么需要迁移Ollama到D盘&#xff1f; 很多AI开发者在Windows系统上初次安装Ollama时&#xff0c;都会遇到一个头疼的问题——默认安装路径在C盘。随着模型文件的不断下载和项目积累&#xff0c;C盘空间很快就会被占满。我自己就经历过C盘爆红的尴尬&#xff0c;系统卡顿不…...

低功耗设计避坑指南:从UPF报错案例学习isolation rules的正确姿势

低功耗设计避坑指南&#xff1a;从UPF报错案例学习isolation rules的正确姿势 在芯片设计领域&#xff0c;低功耗已成为衡量产品竞争力的核心指标之一。随着工艺节点不断演进&#xff0c;静态功耗占比显著提升&#xff0c;使得电源门控&#xff08;Power Gating&#xff09;技术…...

告别逐行阅读:这个终端工具让你的阅读速度提升200%

告别逐行阅读&#xff1a;这个终端工具让你的阅读速度提升200% 【免费下载链接】speedread A simple terminal-based open source Spritz-alike (per-word RSVP aligned on optimal reading points) 项目地址: https://gitcode.com/gh_mirrors/sp/speedread 在信息爆炸的…...

Umi-OCR深度指南:离线OCR技术的架构解析与全场景实战

Umi-OCR深度指南&#xff1a;离线OCR技术的架构解析与全场景实战 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件&#xff0c;适用于Windows系统&#xff0c;支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com/GitHu…...