[LeetCode周赛复盘] 第 327 场周赛20230108

news2024/12/23 10:32:36

[LeetCode周赛复盘] 第 327 场周赛20230108

    • 一、本周周赛总结
    • 二、 [Easy] 6283. 正整数和负整数的最大计数
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 三、[Medium] 6285. 执行 K 次操作后的最大分数
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 四、[Medium] 6284. 使字符串总不同字符的数目相等
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 五、[Hard] 6306. 过桥的时间
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 六、参考链接

一、本周周赛总结

  • 这场阳了没敢打,也忘了,半小时后开机,大概12:18做完。T4堆模拟,大概还是能上分。
  • T1 模拟或二分。
  • T2 堆模拟
  • T3 集合模拟。
  • T4 四个堆模板。

二、 [Easy] 6283. 正整数和负整数的最大计数

链接: 6283. 正整数和负整数的最大计数

1. 题目描述

在这里插入图片描述

2. 思路分析

按题意模拟即可。

  • 由于题目是有序的,二分也可以。

3. 代码实现

class Solution:
    def maximumCount(self, nums: List[int]) -> int:
        c = Counter()
        for x in nums:
            if x :
                c[x//abs(x)] += 1
        return max(c[-1],c[1])

三、[Medium] 6285. 执行 K 次操作后的最大分数

链接: 6285. 执行 K 次操作后的最大分数

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 题意很明显的指向堆。

3. 代码实现

class Solution:
    def maxKelements(self, nums: List[int], k: int) -> int:
        
        h = []
        for x in nums:
            heappush(h,-x)
        ans = 0
        for _ in range(k):
            a = -heappop(h)
            ans += a 
            a = (a+3-1)//3
            heappush(h,-a)
        return ans

四、[Medium] 6284. 使字符串总不同字符的数目相等

链接: 6284. 使字符串总不同字符的数目相等

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 虽然两个单词长度很大,但是其实只有小写字母,因此去重后就是26.可以暴力枚举。
  • 用w1 w2承载原单词的集合。
  • 然后分别计数。
  • 从计数中枚举要交换的字母,如果计数大于1则集合不变,==1则去掉这个字符。
  • 然后判断两边是否一样长即可。

3. 代码实现

class Solution:
    def isItPossible(self, word1: str, word2: str) -> bool:
        w1 = set(word1)
        w2 = set(word2)        
        
        c1 = Counter(word1)
        c2 = Counter(word2)
        
        for a,b in c1.items():   
            l = w1 if b>1 else w1-{a}  # 左集合去掉a
            for c,d in c2.items():                         
                r = w2 if d >1 else w2 - {c}  # 右集合去掉c
                if len(l|{c}) == len(r|{a}):  # 左集合+c,右集合+a
                    return True 
        return False

五、[Hard] 6306. 过桥的时间

链接: 6306. 过桥的时间

1. 题目描述

在这里插入图片描述
在这里插入图片描述

2. 思路分析

  • 四个堆的含义分别是:
  • l:左边等上桥的人,大顶堆储存优先级,决定让谁上
  • r: 右边等上桥的人,大顶堆
  • t1: 左边正在搬东西的人,小顶堆,储存它搬完东西准备上桥的时间。
  • t2: 右边正在搬东西的人,同上。
  • 其中t1里的人将向l走,t2里的人将向r走。
  • 显然时间的卡点在桥每次只能有一个人走,所有人都在等桥空,因此我们用ans代表桥空下来的时间。
  • 活没干完时,即桥右侧有人没回来或者n>0,进行计算,我这里直接while True了。
  • 显然先把t1t2队伍里<=ans的人都追加到各自队伍里。
  • 如果这时还没人等桥,但活又没干完,那就加速(not r and (not l or not n)),即必须找人等桥,ans追到第一个等桥的那一刻。
  • 否则找一个人过桥。这个规则就是题面里,先从r里选,否则从l里选(同时n>0)。
  • r里的人过桥:从r中pop一个老哥,ans更新为它的过桥时间,给t1追加一个这老哥卸完货开始等桥的时间。
  • l里的人过桥:从l中pop一个老哥,ans更新为它的过桥时间,给t2追加一个这老哥上完或开始等桥的时间。

3. 代码实现

class Solution:
    def findCrossingTime(self, n: int, k: int, time: List[List[int]]) -> int:
        l, r, t1, t2 = [], [], [], []  # 左边等上桥的人大顶堆、右边等上桥的人大顶堆、左边正在搬的人小顶堆、右边正在搬的人小顶堆
        for i, (lr, po, rl, pn) in enumerate(time):
            heappush(l, (-lr - rl, -i))
        ans = 0  # 桥空下来的时间
        while n or r or t2:
            while t1 and t1[0][0] <= ans:  # 当前时间桥左侧都有谁等待
                _, i = heappop(t1)
                heappush(l, (-time[i][0] - time[i][2], -i))  # 只存优先级和人
               
            while t2 and t2[0][0] <= ans:  # 当前时间桥右侧都有谁等待
                _, i = heappop(t2)
                heappush(r, (-time[i][0] - time[i][2], -i))
                
            if not r and (not l or not n):  # 如果右侧没人等了,且左侧没人等且还得搬(即活没结束,但没有等桥的),让时间前进,找一个最早需要上桥的人
                ans = 1e9
                if t1:
                    ans = t1[0][0]
                if t2:
                    ans = min(ans, t2[0][0])
                continue
            if r:  # 当前时间如果桥右侧有人等,就让他走
                _, i = heappop(r)
                i = -i
                ans = ans + time[i][2]
                heappush(t1, (ans + time[i][3], i))  # 这个人加入左侧等待队伍,保存什么时候开始等桥
            elif n:  # 右侧没人等待,还有箱子,左侧才上桥
                _, i = heappop(l)
                i = -i
                ans = ans + time[i][0]
                heappush(t2, (ans + time[i][1], i))
                n -= 1
            # if not n and not r and not t2:  # 如果箱子没了,且右侧没人等了
            #     break
        return ans      

六、参考链接

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

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

相关文章

10、ThingsBoard-租户

1、租户的概念 目前,有很多的系统都是以多租户的形式来设计的,目的是为了实现数据隔离,thingsboard中也是如此。但是thingsboard把租户在抽象成了一种实体,后续还会讲解其它的实体;用官方的语言解释租户:您可以将租户视为一个单独的业务实体:它是拥有或生产设备和资产的…

Java中ThreadLocal说明

1、ThreadLocal是什么 ThreadLocal&#xff0c;即线程变量&#xff0c;是一个以ThreadLocal对象为键、任意对象为值的存储结构。 这个结构被附带在线程上&#xff0c;也就是说一个线程可以根据一个ThreadLocal对象查询到绑定在这个线程上的一个值。 ——《Java并发编程艺术》如…

GrapeCity Documents Data Viewer[GcDataViewer] Crack

GrapeCity Documents Data Viewer&#xff0c;简称GcDataViewer&#xff0c;是一个统一的基于 JavaScript 的客户端查看器&#xff0c;旨在加载和预览与数据相关的所有流行文档格式。目前&#xff0c;查看器支持 XLSX、SSJSON 和 CSV 格式。除了仅加载数据文件外&#xff0c;数…

卷径计算(厚度累计法/膜厚积分法)

卷径计算的截面积法请参看下面的文章链接: 卷径计算详解(通过卷绕的膜长和膜厚进行计算)_RXXW_Dor的博客-CSDN博客有关卷绕+张力控制可以参看专栏的系列文章,文章链接如下:变频器简单张力控制(线缆收放卷应用)_RXXW_Dor的博客-CSDN博客_收放卷应用张力控制的开闭环算法,…

“/ArcGIS/services”应用程序中的服务器错误

本文迁移自本人网易博客&#xff0c;写于2013年1月5日No Content说明: 执行当前 Web 请求期间&#xff0c;出现未处理的异常。请检查堆栈跟踪信息&#xff0c;以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Web.HttpException: No Content源错误…

第三章 图形初阶

我曾经多次向客户展示以数字和文字表示的、精心整理的统计分析结果&#xff0c;得到的只是客户呆滞的眼神&#xff0c;尴尬得房间里只能听到鸟语虫鸣。然而&#xff0c;当我使用图形向相同的用户展示相同的信息时&#xff0c;他们往往会兴致盎然&#xff0c;甚至豁然开朗。我经…

jQuery控制元素的显示与隐藏(三种方式对比)

hide和show hide:是$(“.类名”)或$(“#标签名”)或$(“标签名”).hide() show:是$(“.类名”)或$(“#标签名”)或$(“标签名”).show() 元素直接消失&#xff0c;没有任何动态效果 slideToggle 通过控制元素的高度来显示与隐藏&#xff0c;因此会有动画效果。slideToggle如果…

RHCE ansible 作业

1、jinjia2模板 hosts.j2&#xff0c;内容如下(主机名和ip地址使用变量)&#xff1a; Welcome to 主机名 &#xff01;&#xff08;比如servera.lab.example.com&#xff09; My ip is ip地址. 要求在所有受管主机生成文件&#xff1a;/etc/welcome.txt。 2、角色部分 根据下列…

【Java】生产者消费者模型

【Java】生产者消费者模型 0x1 前言 生产者和消费者问题是线程模型中的经典问题&#xff1a;生产者和消费者在同一时间段内共用同一个存储空间&#xff0c;生产者往存储空间中添加产品&#xff0c;消费者从存储空间中取走产品&#xff0c;当存储空间为空时&#xff0c;消费者…

设计模式的简单整理

单例的几种方式。 public class Single{private static volatile Single single;private single(){}public static Single getSingle(){if(single null){synchronized(Single.class){if(single null){single new Single();}}}return single;} } 在dcl中volatile为了防止指…

你问我答|为什么说数据中心散热迎来拐点?

喜报!      “绿色领跑企业”      近期,戴尔荣获由中环联合认证中心(CEC)颁发的“绿色领跑企业”奖项,这是继“环保产品领跑者”之后的又一殊荣,恭喜戴尔!    作为全球领先的数字化解决方案供应商,戴尔将可持续发展置于一切工作的核心,以智能、高效的解决方案帮助…

scikit-learn 线性回归 LinearRegression 参数详解

scikit-learn 线性回归 LinearRegression 参数详解LinearRegression 参数详解参考文献LinearRegression 参数详解 # 从 sklearn 中引入线性模型模块 from sklearn import linear_model # 建立线性回归对象 reg reg linear_model.LinearRegression(fit_interceptTrue,copy_XTr…

Stack 155.最小栈

力扣155. 最小栈 【解法一】俩个栈实现 【解法二】一个栈实现 155. 最小栈 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推…

【C++】通过栈/队列/优先级队列/反向迭代器了解适配器及仿函数

目录 一、stack 实现一个stack 二、queue 实现一个queue 三、deque&#xff08;双端对列&#xff09;了解 1、deque的概念 2、为什么采用deque作为stack和queue的底层容器&#xff1f; 3、deque的缺点 3.1随机访问速度不如vector 3.2中间插入、删除速度不如list 3.3…

node.js——http模块

文章目录什么是 http 模块创建最基本的 Web 服务器request 请求对象response 响应对象解决中文乱码问题根据不同的 url 响应不同的 html 内容文件上传实战什么是 http 模块 http 模块是 Node.js 官方提供的、用来创建 Web 服务器的模块。 node.js提供了http模块&#xff0c;其…

【VCS Verdi】VCS Verdi 联合仿真总结

1. VCS 介绍VCS是编译型 Verilog 模拟器&#xff0c;它完全支持 OVI 标准的 Verilog HDL 语言、PLI 和 SDF。VCS 具有行业中较高的模拟性能&#xff0c;其出色的内存管理能力足以支持千万门级的 ASIC 设计&#xff0c;而其模拟精度也完全满足深亚微米 ASIC Sign-Off 的要求。VC…

C++模拟实现优先级队列(priority_queue)

目录 一、 仿函数 1.1仿函数的概念使用 1.2模拟实现仿函数 二、优先级队列&#xff08;priority_queue) 2.1 优先级队列概念 2.2 优先级队列使用 2.3 模拟实现优先级队列 2.3.1 优先级队列类框架 2.3.2 模板参数 2.3.3 构造函数 2.3.4 仿函数 2.3.5 adjust_up (堆向…

linux系统中QT里面信号与槽的实现方法

大家好&#xff0c;今天主要来聊一聊&#xff0c;QT中信号与槽的使用方法。 目录 第一&#xff1a;QT中信号与槽简介 第二&#xff1a;如何在项目里创建信号 第三&#xff1a;如何在项目中创建槽 第四&#xff1a;项目中连接信号与槽 第一&#xff1a;QT中信号与槽简介 在学…

遥感图像处理:最小噪声分离变换(Minimum Noise Fraction Rotation,MNF Rotation)

遥感图像处理&#xff1a;最小噪声分离变换&#xff08;Minimum Noise Fraction Rotation&#xff0c;MNF Rotation1.PCA变换2.MNF3.PCA和MNF1.PCA变换 在统计学中&#xff0c;主成分分析PCA是一种简化数据集的技术。它是一个线性变换。这个变换把数据变换到一个新的坐标系统中…

Django使用Celery异步发送短信(Django4.1.3+Celery5.2.7+ubuntu)

首先要下载Celery&#xff0c;直接pip就好 我的redis配置 CACHES {"default": {"BACKEND": "django_redis.cache.RedisCache","LOCATION": "redis://192.168.2.128:6379/0","OPTIONS": {"CLIENT_CLASS"…