LeetCode 每日一题 2024/4/1-2024/4/7

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步


目录

      • 4/1 2810. 故障键盘
      • 4/2 894. 所有可能的真二叉树
      • 4/3 1379. 找出克隆二叉树中的相同节点
      • 4/4 2192. 有向无环图中一个节点的所有祖先
      • 4/5 1026. 节点与其祖先之间的最大差值
      • 4/6 1483. 树节点的第 K 个祖先
      • 4/7 1600. 王位继承顺序


4/1 2810. 故障键盘

依次考虑 将字符串放入数组中
记录插入的位置如果逆序 则从头开始插入
loc记录是顺序还是逆序

def finalString(s):""":type s: str:rtype: str"""loc =Trueans=[]for c in s:if c=="i":loc = not locelif loc:ans.append(c)else:ans = [c]+ansif loc:return ''.join(ans)else:return ''.join(ans[::-1])

4/2 894. 所有可能的真二叉树

真二叉树总结点必定为奇数
mem[i]记录i个节点的真二叉树情况

class TreeNode(object):def __init__(self, val=0, left=None, right=None):self.val = valself.left = leftself.right = right
def allPossibleFBT(n):""":type n: int:rtype: List[TreeNode]"""if n<3 or n%2==0:return []mem = {}mem[1] = [TreeNode(0)]def check(num):if num in mem:return mem[num]tmp = []for l in range(1,num-1,2):left = check(l)right = check(num-1-l)for ln in left:node = TreeNode(0)node.left = lnfor rn in right:node.right = rntmp.append(node)mem[num]=tmpreturn tmpreturn check(n)

4/3 1379. 找出克隆二叉树中的相同节点

dfs搜索

class TreeNode(object):def __init__(self, val=0, left=None, right=None):self.val = valself.left = leftself.right = right
def getTargetCopy(original, cloned, target):""":type original: TreeNode:type cloned: TreeNode:type target: TreeNode:rtype: TreeNode"""def check(ori,clo):if not ori:return oriif ori==target:return cloleft = check(ori.left,clo.left)right = check(ori.right,clo.right)if left:return leftreturn rightreturn check(original, cloned)

4/4 2192. 有向无环图中一个节点的所有祖先

如果x为y的祖先 那么x的祖先必定是y的祖先
cur存储祖先节点已经都被考虑过的节点
par[x]记录x当前未被考虑的祖先个数
ans[x]记录x的祖先

def getAncestors(n, edges):""":type n: int:type edges: List[List[int]]:rtype: List[List[int]]"""cur = set(list(range(n)))ans = [set() for _ in range(n)]m = [[] for _ in range(n)]par = [0]*nfor x,y in edges:if y in cur:cur.remove(y)m[x].append(y)par[y]+=1while cur:tmp = set()for p in cur:for child in m[p]:ans[child].add(p)ans[child]|=ans[p]par[child]-=1if par[child]==0:tmp.add(child)cur = tmpfor i in range(n):ans[i] = sorted(list(ans[i]))return ans

4/5 1026. 节点与其祖先之间的最大差值

从根节点往子节点判断 记录当前最大值和最小值
当前节点与最大值最小值能够得到的最大差值

class TreeNode(object):def __init__(self, val=0, left=None, right=None):self.val = valself.left = leftself.right = right
def maxAncestorDiff(root):""":type root: TreeNode:rtype: int"""global ansans = 0def check(node,minv,maxv):global ansif not node:returnans = max(ans,abs(minv-node.val))ans = max(ans,abs(maxv-node.val))minv = min(node.val,minv)maxv = max(node.val,maxv)check(node.left,minv,maxv)check(node.right,minv,maxv)check(root,root.val,root.val)return ans

4/6 1483. 树节点的第 K 个祖先

dp[i]用来记录i的祖先
因为n很大 使用二维dp[i][j] 记录i的第2^j个祖先
dp[i][0]即为i的父节点
dp[i][j] = dp[dp[i][j-1]][j-1]
即i的第2^j个祖先 是i的第2^(j-1) 个祖先的第2^(j-1)个祖先

class TreeAncestor(object):def __init__(self, n, parent):""":type n: int:type parent: List[int]"""self.dp = [[] for _ in range(n)]for i in range(n):self.dp[i].append(parent[i])j=1while True:tag = Truefor i in range(n):v = -1if self.dp[i][j-1]!=-1:v = self.dp[self.dp[i][j-1]][j-1]self.dp[i].append(v)if v!=-1:tag = Falseif tag:breakj+=1      def getKthAncestor(self, node, k):""":type node: int:type k: int:rtype: int"""ans = node pos = 0while k and ans!=-1:if pos>=len(self.dp[ans]):return -1if k&1:ans = self.dp[ans][pos]k = k>>1pos+=1return ans

4/7 1600. 王位继承顺序

可以看做是一个多叉树
继承顺序为父-子 前序遍历 根左右
dead记录死亡的人
m[x]记录x的儿子

class ThroneInheritance(object):def __init__(self, kingName):""":type kingName: str"""from collections import defaultdictself.dead = set()self.king = kingNameself.m = defaultdict(list)def birth(self, parentName, childName):""":type parentName: str:type childName: str:rtype: None"""self.m[parentName].append(childName)def death(self, name):""":type name: str:rtype: None"""self.dead.add(name)def getInheritanceOrder(self):""":rtype: List[str]"""ans = []def pre(name):if name not in self.dead:ans.append(name)if name in self.m:for c in self.m[name]:pre(c)pre(self.king)return ans

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/796840.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

8种专坑运维的 SQL 写法,性能降低100倍,您不来看看?

1、LIMIT 语句 分页查询是最常用的场景之一&#xff0c;但也通常也是最容易出问题的地方。比如对于下面简单的语句&#xff0c;一般 DBA 想到的办法是在 type&#xff0c;name&#xff0c; create_time 字段上加组合索引。这样条件排序都能有效的利用到索引&#xff0c;性能迅…

AIGC实战——ProGAN(Progressive Growing Generative Adversarial Network)

AIGC实战——ProGAN 0. 前言1. ProGAN2. 渐进式训练3. 其他技术3.1 小批标准差3.2 均等学习率3.3 逐像素归一化 4. 图像生成小结系列链接 0. 前言 我们已经学习了使用生成对抗网络 (Generative Adversarial Network, GAN) 解决各种图像生成任务。GAN 的模型架构和训练过程具有…

真实的招生办对话邮件及美国高校官网更新的反 AI 政策

这两年 ChatGPT 的热度水涨船高&#xff0c;其编写功能强大&#xff0c;且具备强大的信息整合效果&#xff0c;所以呈现的内容在一定程度上具备可读性。 那么&#xff0c;美国留学文书可以用 ChatGPT 写吗&#xff1f;使用是否有风险&#xff1f;外网博主 Kushi Uppu 在这个申…

C++20 semaphore(信号量) 详解

头文件在C20中是并发库技术规范&#xff08;Technical Specification, TS&#xff09;的一部分。信号量是同步原语&#xff0c;帮助控制多线程程序中对共享资源的访问。头文件提供了标准C方式来使用信号量。 使用环境 Windows&#xff1a;VS中打开项目属性&#xff0c;修改C语…

基于卷积神经网络的天气识别系统(pytorch框架)【python源码+UI界面+前端界面+功能源码详解】

功能演示&#xff1a; 天气识别系统&#xff0c;vgg16&#xff0c;mobilenet卷积神经网络&#xff08;pytorch框架&#xff09;_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于卷积神经网络的天气识别系统是在pytorch框架下实现的&#xff0c;系统中有两个模型可选…

vue+elementUI实现表格组件的封装

效果图&#xff1a; 在父组件使用表格组件 <table-listref"table":stripe"true":loading"loading":set-table-h"slotProps.setMainCardBodyH":table-data"tableData":columns"columns.tableList || []":ra…

快速创建Python库文档:pdoc的简便之道

快速创建Python库文档:pdoc的简便之道 什么是pdoc&#xff1f; pdoc 是一个用于自动生成 Python 模块文档的库,它可以根据代码中的 docstrings 自动生成漂亮的文档网页. 为什么选择使用pdoc库&#xff1f; 简单易用: pdoc不需要复杂的配置,只需运行一个命令即可生成文档。 …

项目管理工具对比:甘特图与看板

许多项目管理工具都能帮助你规划、管理和跟踪项目&#xff0c;比如甘特图和看板。如果比较一下甘特图和看板&#xff0c;会发现两者在不同方面都对项目有价值。 让我们来看看看板与甘特图的区别&#xff0c;了解它们是如何工作的&#xff0c;以及各自的优缺点&#xff0c;看看…

基于Springboot的Java学习平台

采用技术 基于Springbootjava学习平台的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBootMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 系统功能模块 后台管理 用户注册 课程信息 作业信息 资料信息…

电工技术学习笔记——正弦交流电路

一、正弦交流电路 1. 正弦量的向量表示法 向量表示方法&#xff1a;正弦交流电路中&#xff0c;相量表示法是一种常用的方法&#xff0c;用于描述电压、电流及其相位关系。相量表示法将正弦交流信号表示为复数&#xff0c;通过复数的运算来描述电路中各种参数的相互关系 …

java中的正则表达式和异常

正则表达式&#xff1a; 作用一&#xff1a;用来校验数据格式是否合法 作用二&#xff1a;在文本中查找满足要求的内容 不用正则表达式&#xff1a;检验QQ号是否合法&#xff0c;要求全部是数字&#xff0c;长度在6-20&#xff0c;不能以0开头 public class test {public stat…

使用阿里云试用Elasticsearch学习:2.3 深入搜索——多字段搜索

查询很少是简单一句话的 match 匹配查询。通常我们需要用相同或不同的字符串查询一个或多个字段&#xff0c;也就是说&#xff0c;需要对多个查询语句以及它们相关度评分进行合理的合并。 有时候或许我们正查找作者 Leo Tolstoy 写的一本名为 War and Peace&#xff08;战争与…

【Linux实践室】Linux高级用户管理实战指南:创建与删除用户组操作详解

&#x1f308;个人主页&#xff1a;聆风吟_ &#x1f525;系列专栏&#xff1a;Linux实践室、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️任务描述二. ⛳️相关知识2.1 &#x1f514;Linux创建用户组命令2.1.1 知识点讲解2.1.2…

设计模式的区别

很多设计模式看起来或者感觉上差不多&#xff0c;其实不仅仅要从具体的实现方式来辨别&#xff0c;更要主要该种设计模式的意图。 那些容易混淆的设计模式&#xff0c;了解一下~_看了几种设计模式发现有点混乱,都差不多啊-CSDN博客

亲手开发全国海域潮汐表查询微信小程序详情教程及代码

最近在做一个全国海域潮汐表查询&#xff0c;可以为赶海钓鱼爱好者提供涨潮退潮时间表及潮高信息。 下面教大家怎么做一个这样的小程序。 主要功能&#xff0c;根据IP定位地理位置&#xff0c;自动查询出省份或城市的港口&#xff0c;进入后预测7天内港口潮汐表查询。 步骤&…

全坚固笔记本丨工业笔记本丨三防笔记本相较于普通笔记本有哪些优势?

三防笔记本和普通笔记本在设计和性能方面存在显著差异&#xff0c;三防笔记本相较于普通笔记本具备以下优势&#xff1a; 三防笔记本通常采用耐磨、耐摔的材料&#xff0c;并具有坚固的外壳设计&#xff0c;能够承受恶劣环境和意外碰撞&#xff0c;有效保护内部组件不受损坏。相…

【Linux】进程初步理解

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. 冯诺依曼体系结构1.1 认识冯诺依曼体系结构1.2 存储金字塔 2. 操作系统2.1 概念2.2 结构2.3 操作系统的管理 3. 进程3.1 进程描述3.2 Linux下的PCB 4. task_struct本身内部属性4.1 启动4.2 进程的创建方式4.2.1 父…

C/C++预处理过程

目录 前言&#xff1a; 1. 预定义符号 2. #define定义常量 3. #define定义宏 4. 带有副作用的宏参数 5. 宏替换的规则 6. 宏和函数的对比 7. #和## 8. 命名约定 9. #undef 10. 命令行定义 11. 条件编译 12. 头文件的包含 13. 其他预处理指令 总结&#x…

谷歌在生成式人工智能领域的挑战与机遇:内部纷争与市场压力下的战略调整

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

nest获取传入接口的参数

代码 Query 可接收接口路径中传入的参数 Body 可接收body中传入的参数 Headers 可接收Headers中传入的参数 import { Controller, Post, Get, Body, Query, Headers } from nestjs/common;// 定义getList参数类型 export class ListDto {readonly page: number;readonly page…