[LeetCode周赛复盘] 第 102 场双周赛20230415

news2024/12/28 3:44:47

[LeetCode周赛复盘] 第 102 场双周赛20230415

    • 一、本周周赛总结
    • 二、 6333. 查询网格图中每一列的宽度
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 三、6334. 一个数组所有前缀的分数
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 四、6335. 二叉树的堂兄弟节点 II
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 五、6336. 设计可以求最短路径的图类
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 六、参考链接

一、本周周赛总结

  • T4卡了半小时,真的不应该。
  • T1 模拟。
  • T2 前缀和模拟。
  • T3 分层遍历。
  • T4 floyd/dij(我觉得dij不是正解)。
    在这里插入图片描述

二、 6333. 查询网格图中每一列的宽度

链接: 6333. 查询网格图中每一列的宽度

1. 题目描述

在这里插入图片描述

2. 思路分析

按题意模拟即可。

3. 代码实现

class Solution:
    def findColumnWidth(self, grid: List[List[int]]) -> List[int]:
        m,n = len(grid),len(grid[0])
        ans = [1]*n 
        for i,row in enumerate(grid):
            for j,v in enumerate(row):
                ans[j] = max(ans[j],len(str(v)))
        return ans 

三、6334. 一个数组所有前缀的分数

链接: 6334. 一个数组所有前缀的分数

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 不要被题目的一堆变量唬住。
  • 直接按题意模拟即可。

3. 代码实现

class Solution:
    def findPrefixScore(self, nums: List[int]) -> List[int]:
        n = len(nums)
        con = [0]*n 
        mx = 0
        for i,v in enumerate(nums):
            mx = max(mx,v)
            con[i] = v + mx 
        return list(accumulate(con))

四、6335. 二叉树的堂兄弟节点 II

链接: 6335. 二叉树的堂兄弟节点 II

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 层先法,把每层的和记下来。
  • 顺便每个节点的父亲记下来。
  • 那么把当前层相同父亲的值减去即可。实现时把儿子的值累积到父亲上更方便。

3. 代码实现

class Solution:
    def replaceValueInTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:                
        root.val = 0
        q = [(root,root)]
        fas = {}
        while q:
            s = 0
            nq = []
            sm = Counter()
            for u,fa in q:       
                s += u.val
                sm[fa] += u.val
                if u.left:
                    fas[u.left] = u 
                    nq.append((u.left,u))
                if u.right:
                    fas[u.right] = u 
                    nq.append((u.right,u))
            for u,fa in q:
                u.val = s - sm[fa]
            
            q = nq
            
        return root

五、6336. 设计可以求最短路径的图类

链接: 6336. 设计可以求最短路径的图类

1. 题目描述

在这里插入图片描述

2. 思路分析

这题做得慢可惜了,acw之前考过一个逐步加点的题。这题是逐步加边。
  • 用floyd,每次加边后,把两个端点作为k,做一遍floyd即可。这样查询是O(1)。

  • 偷懒的做法是,前两个操作只负责建图。
  • 每次查询时用dijkstra暴力算,复杂度O(nlogn + m),注意m可能比较大(n*(n-1)),最坏情况下应该慢于floyd。

3. 代码实现

floyd

class Graph:

    def __init__(self, n: int, edges: List[List[int]]):
        # self.g = [[] for _ in range(n)]
        dist = self.dist = [[inf]*n for _ in range(n)]
        for u,v,w in edges:
            self.dist[u][v] = w
        for k in range(n):
            dist[k][k] = 0
    
        for k in range(n):  # 中间点,也就是经过的点,如果需要记path,则发现小就记k
            for u in range(n):  # 左短点
                for v in range(n):  # 右端点
                    dist[u][v] = min(dist[u][v],dist[u][k]+dist[k][v])      
        self.n = n

    def addEdge(self, edge: List[int]) -> None:
        n = self.n
        u,v,w = edge
        # self.g[u].append((v,w))
        dist = self.dist
        # print(dist)
        if w < dist[u][v]:
            dist[u][v] = w
            for a in range(n):
                for b in range(n):
                    dist[a][b] =min(dist[a][b],dist[a][u]+dist[u][b])
            for a in range(n):
                for b in range(n):
                    dist[a][b] =min(dist[a][b],dist[a][v]+dist[v][b])
            

    def shortestPath(self, node1: int, node2: int) -> int:
        d = self.dist[node1][node2]
        if d == inf:
            return -1
        return d

dijkstra暴力

class Graph:
    def __init__(self, n: int, edges: List[List[int]]):
        self.g = [[] for _ in range(n)]
        for u,v,w in edges:
            self.g[u].append((v,w))
        self.n = n

    def addEdge(self, edge: List[int]) -> None:
        u,v,w = edge
        self.g[u].append((v,w))


    def shortestPath(self, node1: int, node2: int) -> int:
        n = self.n
        dis = [inf]*n 
        dis[node1] = 0
        g = self.g
        q = [(0,node1)]
        while q:
            d,u = heappop(q)
            if d > dis[u]:continue 
            for v,w in g[u]:
                if w + d < dis[v]:
                    dis[v] = w + d 
                    heappush(q,(w+d,v))
        if dis[node2] == inf:
            return -1
        return dis[node2]   

六、参考链接

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

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

相关文章

English Learning - L2 第 15 次小组纠音 助动词弱读和重音节奏 2023.4.15 周六

English Learning - L2 第 15 次小组纠音 助动词弱读和重音节奏 2023.4.15 周六共性问题have has /hv/ /hz/ 弱读成 /həv/ /həz/fine left /faɪn/ /left/late changed train /leɪt/ /ʧeɪnʤd/ /treɪn/ 中的 eɪmoment problem time /ˈməʊmənt/ /ˈprɒbləm/ /taɪm…

4.10~4.11学习总结

ER图的学习&#xff1a; 学习了ER图相关知识&#xff0c;并绘制了项目大概的ER图 详细笔记博客&#xff1a;http://t.csdn.cn/YOJxq MySQL的学习&#xff1a; 函数 学习了字符串函数&#xff0c;数值函数&#xff0c;日期函数&#xff0c;流程函数。 约束 作用于表中字段的规则…

改善Instagram客户服务的6个技巧

Instagram仍然是全球前四大社交网络&#xff0c;按用户数量排名。它通过其创新的过滤器、内容创建工具、视频和卷轴选项继续增长并推动流量。这是一个平台&#xff0c;世界顶级名人和有影响力的人可以为全球用户提供有趣和令人印象深刻的内容。 但不仅仅是一个娱乐平台&#xf…

Nestjs实战干货-概况-异常过滤器-Exception filters

异常过滤器 Nest 带有一个内置的异常层&#xff0c;负责处理应用程序中所有未处理的异常。当应用程序代码未处理异常时&#xff0c;该层会捕获该异常&#xff0c;然后自动发送适当的用户友好响应。 开箱即用&#xff0c;此操作由内置的全局异常过滤器执行&#xff0c;该过滤器…

三、Locust任务(task)详解

当一个负载测试开始时&#xff0c;将为每个模拟用户创建一个用户类的实例&#xff0c;他们将在自己的绿色线程中开始运行。当这些用户运行时&#xff0c;他们会选择执行的任务&#xff0c;睡眠一段时间&#xff0c;然后选择一个新的任务&#xff0c;如此循环。 这些任务是正常…

二、Java 并发编程(4)

本章概要 Java 中的锁 乐观锁悲观锁自旋锁synchronizedReentrantLocksynchronized 与 ReentrantLock 对比SemaphoreAtomicInteger可重入锁公平锁和非公平锁读写锁共享锁和独占锁重量级锁和轻量级锁偏向锁分段锁同步锁和死锁如何进行锁优化 2.6 Java 中的锁 Java 中的锁主要…

【C语言进阶:动态内存管理】C/C++中程序内存区域的划分

⚡C/C中程序内存区域的划分 C/C程序内存分配的几个区域&#xff1a; 栈区&#xff08;stack&#xff09;&#xff1a;在执行函数时&#xff0c;函数内局部变量的存储单元都可以在栈上创建&#xff0c;函数执行结 束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指…

day8 互斥锁/读写锁的概念及使用、死锁的避免

目录 互斥锁的概念和使用 线程通信 - 互斥 互斥锁的创建和销毁 互斥锁的创建 互斥锁的销毁 互斥锁的使用 申请锁 释放锁 互斥锁的概念和使用 线程通信 - 互斥 临界资源&#xff1a; 一次只允许一个任务&#xff08;进程、线程&#xff09;访问的共享资源&#xff1b…

Maven-依赖管理

一. 依赖管理 1. maven-依赖管理-依赖配置 依赖&#xff1a;指当前项目运行所需要的jar包。一个项目中可以引入多个依赖&#xff1a; 例如&#xff1a;在当前工程中&#xff0c;我们需要用到logback来记录日志&#xff0c;此时就可以在maven工程的pom.xml文件中&#xff0c…

Python让ChatGPT全自动改写生成文章教程

ChatGPT是一个在自然语言处理领域非常先进的文本生成模型&#xff0c;它能够产生高质量、连贯的文章。它受到了广泛的关注&#xff0c;因为它可以自动生成大量的文本&#xff0c;从而减轻了人工写作的负担。怎么使用chatgpt批量改写文章&#xff1f;最简单的方式就是找到一家接…

I.MX6U开发板使用OTG烧写系统

1.系统烧写 在实际的产品开发中肯定不可能通过网络来运行&#xff0c;否则没网的时候产品岂不 是就歇菜了。因此我们需要将 uboot、linux kernel、.dtb(设备树)和 rootfs 这四个文件烧写到板子 上的 EMMC、NAND 或 QSPI Flash 等其他存储设备上&#xff0c;这样不管有没有网络我…

SpringCloud 使用sentinel

一、添加依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> 二、配置文件配置地址 spring:cloud:sentinel:transport:dashboard: localhost:8080三…

机器学习:基于逻辑回归对优惠券使用情况预测分析

机器学习&#xff1a;基于逻辑回归对优惠券使用情况预测分析 作者&#xff1a;i阿极 作者简介&#xff1a;Python领域新星作者、多项比赛获奖者&#xff1a;博主个人首页 &#x1f60a;&#x1f60a;&#x1f60a;如果觉得文章不错或能帮助到你学习&#xff0c;可以点赞&#x…

Elasticsearch:集群管理的一些建议

在之前的文章 “Elasticsearch&#xff1a;集群管理” &#xff0c;我们对集群管理做了一些介绍。在今天的文章中&#xff0c;我们接着来聊一下有关配置的方面的问题。这在很大程度上取决于你的用例&#xff0c;是索引还是搜索繁重。 我们将在这里讨论在集群设置方面我们需要关…

中国算力的想象力有多大?|产业特稿

巨头入场和“东数西算”的助推&#xff0c;让中国离这个万亿级算力蓝海更近了一步。 作者|思杭 编辑|皮爷 出品|产业家 2023年初&#xff0c;在青岛、济南、日照等12座城市&#xff0c;一座座崭新的大型数据中心拔地而起。 其中&#xff0c;最引人瞩目的属2月23日&#xff…

文件上传漏洞 --- php邂逅windows通用上传缺陷

目录 后端源码 前端源码 后端代码审计 方式一绕过原理 --- 冒号加特性 验证及结果 方式二绕过原理 --- 数据流 验证及结果 环境需求 php5.2.17IIS环境&#xff0c;可以下载phpstuday2018来满足环境的要求。 后端源码 <?php //U-Mail demo ... if(isset($_POST[sub…

【AI能否取代设计师】「Stable Diffusion」AI绘画黑科技将告诉你答案

上一篇文章&#xff1a;【AI绘画】我以Midjourney为主学习AI绘画效果咋样&#xff1f;_山楂山楂丸的博客-CSDN博客 目录 前言 一、「Stable Diffusion」 是什么 二、「Stable Diffusion」上手演练 三、竟然还有ChatGPT&#xff1f; 四、「Stable Diffusion」作品展示 五、…

爆火的Auto-GPT:实战及运行体验

Auto-GPT可以说是目前AI应用方向最火爆的项目了&#xff0c;自从3月份上线以来&#xff0c;一个月疯狂拦下将近7万star&#xff08;截至本文写稿时69.5k&#xff09;。它的目的是探索诸如GPT-4这样的大语言模型自主完成任务的能力。业界也有一些大佬出来表示这个项目真的很有趣…

pnpm与monorepo架构

本文根据b站up小满zs教程记录 软硬连接介绍 在cmd环境下输入mklink 创建链接需要开启管理员模式 软连接 # mklink 要创建的连接名称 源文件 mklink ruan.js ying.js硬链接 共享一个内存地址。 # mklink 要创建的连接名称 源文件 mklink /H ying.js ying.jspn…

工程项目管理系统源码-简洁+好用+全面-工程项目管理

​工程项目管理系统是指从事工程项目管理的企业&#xff08;以下简称工程项目管理企业&#xff09;受业主委托&#xff0c;按照合同约定&#xff0c;代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 ​系统定义 工程项目管理企业不直接与该工程项目的总承包企…