[LeetCode周赛复盘] 第 344 场周赛20230507

news/2024/11/24 9:07:49/

[LeetCode周赛复盘] 第 344 场周赛20230507

    • 一、本周周赛总结
    • 6416. 找出不同元素数目差数组
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 6417. 频率跟踪器
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 6418. 有相同颜色的相邻元素数目
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 6419. 使二叉树所有路径值相等的最小代价
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 参考链接

一、本周周赛总结

  • T1 模拟。
  • T2 计数。
  • T3 模拟。
  • T4 dfs。
    在这里插入图片描述

6416. 找出不同元素数目差数组

6416. 找出不同元素数目差数组

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 数据量小,按题意模拟即可。

3. 代码实现

class Solution:def distinctDifferenceArray(self, a: List[int]) -> List[int]:ans = []n = len(a)for i in range(n):ans.append(len(set(a[:i + 1])) - len(set(a[i + 1:])))return ans

6417. 频率跟踪器

6417. 频率跟踪器

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 额外用一个计数器,计数频率即可。

3. 代码实现

class FrequencyTracker:def __init__(self):self.cnt = Counter()self.f = Counter()def add(self, a: int) -> None:x = self.cnt[a]if x > 0:self.f[x] -= 1                        self.cnt[a] += 1        self.f[self.cnt[a]] += 1def deleteOne(self, a: int) -> None:if self.cnt[a] > 0:            self.f[self.cnt[a]] -= 1            self.cnt[a] -= 1self.f[self.cnt[a]] += 1def hasFrequency(self, fr: int) -> bool:return self.f[fr] > 0

6418. 有相同颜色的相邻元素数目

6418. 有相同颜色的相邻元素数目

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 直接模拟,看看每次修改的变化量是多少。
  • 为了方便编码,把a前后都加个0。把ans初始化成0。
  • 每次修改,判断和相邻元素的相同性,调整当前值。
    • 若修改的颜色不变,则值不变直接返回。
    • 若修改前的数和相邻相同,则值需要减小1。(注意0不算)
    • 若修改后和相邻数相同,则值增加1。

3. 代码实现

class Solution:def colorTheArray(self, n: int, queries: List[List[int]]) -> List[int]:a = [0]*(n+2) ans = [0]for i,c in queries:i += 1x = ans[-1]if a[i] == c:ans.append(x)continue if a[i] == a[i-1] != 0:x -= 1 if a[i] == a[i+1] != 0:x -= 1if c == a[i-1]:x +=1 if c == a[i+1]:x += 1ans.append(x)a[i] = c return ans[1:]            

6419. 使二叉树所有路径值相等的最小代价

6419. 使二叉树所有路径值相等的最小代价

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 由于只能增加,因此只能修改更小的那条路径。
  • dfs归的过程中,发现左右两边最大路径不同的话,把小的那边的节点增加。
  • 由于是完全二叉树,不用建图,直接计算左右孩子下标即可。

3. 代码实现

class Solution:def minIncrements(self, n: int, cost: List[int]) -> int:ans = 0 def dfs(u):if u>n:return 0 nonlocal ans l = dfs(u*2)r = dfs(u*2+1)if l > r:l,r= r,lans += r - l return r + cost[u-1]dfs(1)return ans                  

参考链接


http://www.ppmy.cn/news/63619.html

相关文章

Qt5.9学习笔记-事件(四)Qt5.9中常见事件

⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三…

聚焦丨酷雷曼荣列XRMA联盟成员单位

自“元宇宙”概念兴起之初,酷雷曼VR所属北京同创蓝天云科技有限公司就积极布局、探索和实践。2022年12月,酷雷曼VR成功加入虚拟现实与元宇宙产业联盟(XRMA),正式被接纳为联盟成员单位,意味着酷雷曼公司将进…

Stream

1、Stream为什么被引入 常见MQ(消息中间件): ActiveMQRabbitMQRocketMQKafka 有没有一种新的技术诞生,让我们不再关注具体MQ的细节,我们只需要用一种适配绑定的方式,自动的给我们在各种MQ内切换。(类似于Hibernate&a…

第一行代码 第八章 运用手机多媒体

第八章 运用手机多媒体 使用通知 通知(Notification)是Android系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现。发出一条通知后&#xf…

全面理清概念,C风格字符串(多重定义方式,区别,易错点)

C风格字符串 C风格字符串是一种在C语言中表示字符串的方式,它是通过字符数组来实现的。 C风格字符串是一系列字符,以空字符(‘\0’)作为结束标志。这意味着在声明并定义一个C风格字符串时,我们需要为数组分配比实际字符…

C高级第二天

#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc,const char *argv[]) { int n 0, m 0, MAX 0; int arr[n][m]; printf("请输入矩阵行数、列数>>>"); scanf("%d%d", &n…

C++网络基础知识面试题2

目录 1、使用TCP的常见协议有哪些&#xff1f;使用UDP的常见协议有哪些&#xff1f;简单说几个 2、如何判断访问目标地址的网络是通的&#xff1f;如何简单地查看到目标地址的网络是否有丢包和抖动&#xff1f; 3、如果知道目标服务器的服务端口有没有开启&#xff1f; 4、…

unity愤怒的小鸟学习制作(一)

基础知识已经差不多了&#xff0c;现在开始模仿敲代码然后在模仿中熟悉软件和语法 视频链接和素材如下&#xff1a;视频 目录 第一部分&#xff1a;游戏逻辑1、新建2D工程2、创建三个场景3、导入游戏需要的资源4、开始编辑02-game4.1 裁切图片4.2 初步编辑4.3 实现小鸟的拖拽4…