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

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

[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]] += 1

    def deleteOne(self, a: int) -> None:
        if self.cnt[a] > 0:            
            self.f[self.cnt[a]] -= 1            
            self.cnt[a] -= 1
            self.f[self.cnt[a]] += 1

    def 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 += 1
            x = 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 -= 1
            if c == a[i-1]:
                x +=1 
            if c == a[i+1]:
                x += 1
            ans.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,l
            ans += r - l 
            return r + cost[u-1]
        dfs(1)
        return ans                  

参考链接


http://www.kler.cn/news/18533.html

相关文章:

  • 从不同视角来看待API数据接口
  • Unity用脚本获取物体和组件(下)
  • MySQL基础(三)基本的SELECT语句
  • eSIM证书要求-证书验证-EID
  • 第1章 Nginx简介
  • 187页9万字企业大数据治理与云平台实施方案(word)
  • sentinel 随笔 0-责任链
  • 俩小伙一晚上写了个 AI 应用,月入两万??(文末附开发教程)
  • Scrum敏捷开发工具-单团队敏捷开发管理
  • Linux用户空间与内核空间通信(Netlink通信机制)
  • 三种方法教你让模糊照片秒变高清图
  • 软件工程开发文档写作教程(05)—可行性研究报告写作规范
  • PBDB Data Service:Ecological and taphonomic vocabulary(生态学和埋葬学术语)
  • Ansys Lumerical | CMOS - 光学仿真方法
  • 一场面试下来,狂飙 Framework底层原理
  • 单链表OJ题:LeetCode--206.反转链表
  • Java之多线程初阶2
  • 【操作系统OS】学习笔记第三章 内存管理【哈工大李治军老师】
  • 数字化战略,如何解读企业财务报表
  • vue 水印组件
  • 【计算机图形学基础教程】MFC基本绘图函数2
  • selenium——unittest框架
  • 基于 EKS Fargate 搭建微服务性能分析系统
  • mysql数据迁移与同步常用解决方案总结
  • python实现异步过程asyncio
  • 【系分论文】论信息系统开发方法及应用
  • VMware集群不可访问 证书到期
  • TCP三次握手
  • 通过实现MyBatis的Interceptor接口在SQL头部增加统一注释
  • 数据库基础操作 all in one