[LeetCode周赛复盘] 第 317 场周赛20221030

news2024/9/21 14:49:37

[LeetCode周赛复盘] 第 317 场周赛20221030

    • 一、本周周赛总结
    • 二、 [Easy] 6220. 可被三整除的偶数的平均值
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 三、[Medium] 6221. 最流行的视频创作者
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 四、[Medium] 6222. 美丽整数的最小增量
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 五、[Hard] 6223. 移除子树后的二叉树高度
      • 1. 题目描述![在这里插入图片描述](https://img-blog.csdnimg.cn/047cd7ee888c4e8b9e7eb1296f7e6ff8.png)
      • 2. 思路分析
      • 3. 代码实现
    • 六、参考链接

一、本周周赛总结

  • 4题都挺难的。
  • T4wa两次,最后没删打印导致了一次TLE。。
  • T1 直接模拟。
  • T2 统计和然后排序模拟。
  • T3 贪心,从高位开始加模拟。
  • T4 dfs然后哈希表统计。
    在这里插入图片描述

二、 [Easy] 6220. 可被三整除的偶数的平均值

链接: 6220. 可被三整除的偶数的平均值

1. 题目描述

在这里插入图片描述

2. 思路分析

按题意模拟即可。
注意case2表示可以不存在,分母是0要特判

3. 代码实现

class Solution:
    def averageValue(self, nums: List[int]) -> int:
        s = 0
        cnt = 0
        for x in nums:
            if x%6==0:
                s +=x
                cnt += 1
        if cnt == 0:
            return 0
        return s//cnt

三、[Medium] 6221. 最流行的视频创作者

链接: 6221. 最流行的视频创作者

1. 题目描述

在这里插入图片描述

2. 思路分析

按题意模拟即可。

  • s统计总播放量。
  • p统计每个作者的所有视频以及播放量。
  • 最后写个遍历统计最牛作者,这里就是如果遇到大的就替换ans;否则append
  • 最后再处理作者,把他最大的视频找出来,我偷懒直接排序。

3. 代码实现

class Solution:
    def mostPopularCreator(self, creators: List[str], ids: List[str], views: List[int]) -> List[List[str]]:
        s = Counter()
        p = defaultdict(list)
        n = len(creators)
        
        for c,i,v in zip(creators,ids,views):
            s[c]+=v
            p[c].append((-v,i))
        mx = -1
        ans = []
        for k,v in s.items():
            if v > mx:
                mx = v
                ans = [k]
            elif v == mx:
                ans.append(k)
        ret = []
        for c in ans:
            i = sorted(p[c])[0][1]
            ret.append([c,i])
        return ret

四、[Medium] 6222. 美丽整数的最小增量

链接: 6222. 美丽整数的最小增量

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 贪心。
  • 我们发现要加上最小的数,那么首先会使低位变动,低位一定可以加上某个数变成全是0,然后进一位1.
  • 因此我们从高位开始累加,直到和是最小的<=target-1的数,那么后续的低位就可以变0。
  • 注意特判,如果最开始和就小于target,则答案是0。

3. 代码实现

class Solution:
    def makeIntegerBeautiful(self, n: int, target: int) -> int:
        s = str(n)
        i = -1
        p = 0
        if sum(int(x) for x in s) <=target:
            return 0
        while i+1<len(s) and p + int(s[i+1])<= target - 1:
            p += int(s[i+1])
            i += 1
        if i == len(s)-1:
            return 0
        # print(i)
        r = int(s[i+1:])
        ans = 10**(len(s)-i-1) - r
        return ans

                

五、[Hard] 6223. 移除子树后的二叉树高度

链接: 6223. 移除子树后的二叉树高度

1. 题目描述在这里插入图片描述

2. 思路分析

  • 本题wa一次,RE一次,TLE一次。
  • 第一次wa是思路错了,误以为考虑另一个孩子即可。实际应该考虑所有同层。0
  • 第二次RE,因为没考虑同层只有一个孩子的情况,下标越界访问第二大了。
  • 第三次TLE因为没删打印。。。。。

  • 本题要求每次查询独立,还原初始状态。因此是快速查询删除某个子树后,整个树的树高。
  • 我们发现,树的树高=高的那个子树=最深的节点。
  • 删除一棵子树,如果这课子树在本层不是最高的,那么没影响,树高依然可以走最深那颗子树。
  • 如果这棵树是本层最高的h0,那么应该走本层第二深的树h1,树总体减少的高度为h0-h1。
  • 因此我们定义三个哈希表:
    • dh:储存每个深度下所有子树和高度。(这里可以用小顶堆,因为只需要2个最大的元素)
    • d:储存每个节点的深度,便于快速定位dh
    • dd:储存每个节点的高度,便于快速计算答案。
  • 通过dfs计算这三个哈希表,其中深度可以dfs传下去;高度则dfs后根遍历merge。
  • 对于每一层,我们事先sort以便求最大和第二大。
  • 特别的:如果本层只有一个节点,那么剪掉子树等于直接减去这一整颗子树的高度。

3. 代码实现


class Solution:
    def treeQueries(self, root: Optional[TreeNode], queries: List[int]) -> List[int]:
    
        dh = defaultdict(list)  # 每个深度下,所有节点子树和他们的高度
        d = {}  # 每个节点的深度
        dd = {}  # 每个节点的高度
        def dfs(root,depth):
            if not root:
                return 0
            l = dfs(root.left,depth+1)
            r = dfs(root.right,depth+1)
            h = max(l,r)+1
            dh[depth].append((h,root.val))
            d[root.val] = depth
            dd[root.val] = h
            return h
        h = dfs(root,0)  # 树的总高
        for k,v in dh.items():
            v.sort(reverse=True)
       
        ans = []
        for q in queries:
            vs = dh[d[q]]  # 本层所有子树高
            # print(vs)
            if q == vs[0][1]:
                # print(h,vs[0][0],dd[q])
                if len(vs) == 1:  # 本层只有一个节点,直接减去整颗子树的高度
                    ans.append(h-dd[q]-1)
                else:
                    ans.append(h-(dd[q]-vs[1][0])-1)  # 最深路径从第二高走,高度改变=最大值-第二大
            else:
                ans.append(h-1)  # 不是最高的树高不变
        return ans

六、参考链接

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

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

相关文章

终极Hadoop大数据教程

终极Hadoop大数据教程 包含 MapReduce、HDFS、Spark、Flink、Hive、HBase、MongoDB、Cassandra、Kafka 等的数据工程和 Hadoop 教程&#xff01; 课程英文名&#xff1a;The Ultimate Hands-On Hadoop - Tame your Big Data! 此视频教程共17.0小时&#xff0c;中英双语字幕&…

1.3 信号处理函数,创建worker进程

文章目录1、信号处理函数2、创建worker线程3、sigsuspend函数说明4、write函数思考1、信号处理函数 1、初始化信号的函数&#xff0c;用于注册信号处理程序 2、信号处理函数 初始化信号函数&#xff0c;遍历结构体数组&#xff0c;然后给结构体数组中的每个成员注册信号处理函数…

python实现自动检测核酸用码记录 ---- 自动化办公小技巧(摸鱼利器)

自动检测核酸用码记录&#x1f947;预备知识✈️os库os.path.exists()os.mkdir()os.remove()os.listdir()&#x1f47d;Python 3 查看字符编码方法⏰python3获取当前系统时间&#x1f424;读取图片&#xff0c;保存到指定目录&#x1f47c;将数据保存到csv文件中&#x1f948;p…

使用html+css实现一个静态页面(含源码)

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

freeRTOS学习(三)

任务管理 任务功能&#xff1a;任务以C函数的形式实现。唯一特别的地方是它们的原型&#xff0c;它必须返回void并接受一个void指针形参。 void ATaskFunction(void *pvParameters);**每个任务本身都是一个小程序。它有一个入口点&#xff0c;通常在无限循环中永远运行&#…

回归测试选择用例,看这里就可以了。

介绍 在软件生命周期中&#xff0c;软件经常发生变化&#xff0c;软件开发人员任何代码改动都会有引入故障的风险&#xff09;。 为了消除或减小这种风险&#xff0c;在软件迭代开发模式下&#xff0c;回归测试扮演着重要的角色&#xff1a;它能够帮助测试人员验证新增的功能…

mac配置jdk环境变量

**下载完成后直接安装一路next直到完成。 查看JDK安装后的路径 在终端输入以下命令查看JDK地址** 按照以下命令的顺序来设置jdk环境变量 查看JDK地址 &#xff1a;/usr/libexec/java_home -V。 open -e .bash_profile打开文件 touch .bash_profile 创建文件 打开.bash_prof…

G2O (General Graph Optimization)入门及简单使用

g2o全称是General Graph Optimization&#xff0c;也就是图优化&#xff0c;我们在做SLAM后端或者更加常见的任何优化问题&#xff08;曲线拟合&#xff09;都可以使用G2O进行处理。 先放出本文的几个参考链接&#xff1a; 半闲居士&#xff08;高翔博士&#xff09; 非线性…

智能终端信息安全概念(一):开篇

最近屁事以及自己对于时间的把控太差了&#xff0c;还有就是一个师妹最近让辅导作业&#xff0c;很烦。 回归正轨&#xff0c;好好学习Linux驱动的方面。 在实际的Linux驱动中&#xff0c;Linux内核尽量做得更多&#xff0c;以便于底层的驱动可以做得更少。 而且&#xff0c…

【C++笔试强训】第十七天

&#x1f387;C笔试强训 博客主页&#xff1a;一起去看日落吗分享博主的C刷题日常&#xff0c;大家一起学习博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a;夜色难免微凉&#xff0c;前方必有曙光 &#x1f31e;。 &#x1f4a6;&a…

【微服务容器化】第四章-Docker应用部署

&#x1f334;第四章 Docker应用部署&#x1f343;4.1 Mysql部署&#x1f343;4.2 Tomcat部署&#x1f343;4.3 Nginx 部署&#x1f343;4.4 redis 部署&#x1f343;4.1 Mysql部署 分析: 容器内的网络服务和外部机器不能直接通信 外部机器和宿主机可以直接通信 宿主机和容器…

因为有了它,我用舍友玩王者的时间拿到了华为offer

随时随地刷Leetcode题的方法&#xff0c;大学因为这个&#xff0c;我入职大厂! 下面有免费试用网址 目录我如何拿到大厂offer秘密武器使用教程VSCODE云IDE介绍完整功能&#xff0c;兼容VS Code安装的插件没有效果&#xff1f;通过终端启动项目后无法预览&#xff1f;CIDE收费…

sklearn笔记:调参

1 介绍 超参数是不直接在估计器中学习的参数。 在 scikit-learn 中&#xff0c;它们作为参数传递给估计器类的构造函数。 需要搜索超参数空间以获得最佳交叉验证分数。scikit-learn 中提供了两种通用的参数搜索方法&#xff1a; 对于给定的值&#xff0c;GridSearchCV 会详尽地…

客快物流大数据项目(八十四):Impala优化

文章目录 Impala优化 一、​​​​​​​Impala关键配置 二、Impala查询分析

C++ Reference: Standard C++ Library reference: C Library: cstring: strspn

C官网参考链接&#xff1a;strspnhttps://cplusplus.com/reference/cstring/strspn/strspn 函数 <cstring> strspn size_t strspn ( const char * str1, const char * str2 ); 获取字符串中字符集的跨度 返回str1的初始部分的长度&#xff0c;它只包含str2的一部分字符…

FPGA双线性插值图像缩放详细讲解,上板验证稳定通过,提供两套工程源码

开局直接放大招&#xff1a;提供源码及工程&#xff1b; 重点讲解双线性插值图像缩放&#xff1b; 此功能模块使用HLS实现&#xff0c;并已封装导出IP&#xff0c;可在工程中添加并使用&#xff0c;可提供HLS工程源码&#xff1b; 若是用verilog实现双线性插值图像缩放&#xf…

【Java中23种面试常考的设计模式之组合模式(Composite)---结构型模式】

【Java中23种面试常考的设计模式之组合模式(Composite)—结构型模式】 知识回顾: 之前我们讲过的设计模式在这里呦: 【面试最常见的设计模式之单例模式】 【面试最常见的设计模式之工厂模式】 【Java中23种面试常考的设计模式之备忘录模式(Memento)—行为型模式】 【Java中23种…

【每日渗透笔记】后台弱口令+未授权尝试

目录 一、特点&#xff1a; 1.1、特征&#xff1a; 1.2、分析&#xff1a; 1.3、所处情景&#xff1a; 目前&#xff1a; 问题&#xff1a; 二、渗透 一、特点&#xff1a; 1.1、特征&#xff1a; 用户登陆页面 1.2、分析&#xff1a; 毋庸置疑&#xff0c;既然有用户登…

SpringBoot系列之动态生成cron表达式执行定时程序

业务场景 最近需要实现一个功能&#xff0c;根据页面选择的星期&#xff0c;默认是凌晨执行&#xff0c;生成cron表达式&#xff0c;然后定时执行定时程序 环境准备 开发环境 JDK 1.8SpringBoot2.2.1Maven 3.2 开发工具 IntelliJ IDEAsmartGitNavicat15 在IDEA里集成阿里的…

Pycharm 如何自动调整 Python 代码符合 pep8 编码规范

前言 学生时代&#xff0c;写的一手漂亮的好字&#xff0c;能给人留下好的印象。作为 IT 人&#xff0c;写的一手漂亮的代码也会给人留下美好的印象。 代码就是自己的脸面&#xff0c;不管写质量怎样&#xff0c;首先要写的漂亮。Python 有一套 pep8 编码规范标准。 什么是 p…