LeetCode笔记:Biweekly Contest 36 比赛记录

新入手的Atmel-ICE产品说明 【一句话自我介绍】 我是Atmel最新推出的功能强大的调试编程工具,适用于Atmel ARM® Cortex®-M的Atmel SAM和AVR® 系列芯片。 【我支持的软件】 完美支持Atmel Studio 6.2以上版本直接支持ICC8AVR以上版本支持烧录ICCAVR、CVAVR、IAR等生成的HEX文件 【我支持的器件】 支持AVR 32-bit MCUs的JTA 阅读详情

0. 赛后总结

昨天本来身体有点不舒服,就借口颓废了一整天,除了看剧啥事没干,想着比赛就算了吧,结果晚上还是没能逃过罪恶感,还是参加了一下,本来觉得就这状态估计要挂,结果居然打出了历史最好成绩,全球157名,国内51名,真的是意外之喜。

虽说周六的比赛参加的人比较少有点水分,但是终究也是一件开心的事,希望今天也可以保持这个状态!!!

1. 题目一

给出题目一的试题链接如下:

1. 解题思路

这一题的本质就是设计一个计数器来记录大中小三种类型的车位总数和已经使用了的车位数。

不过,由于要求实现的只有进车的函数,而没有出车的函数,所以事实上我们甚至不需要记录当前停的车的数目,只需要暴力地做一个简单的倒计时计数器即可,因为车位永远只会被消耗,不会被补充回去。

2. 代码实现

给出python代码实现如下:

class ParkingSystem:
    def __init__(self, big: int, medium: int, small: int):
        self.car = [big, medium, small]

    def addCar(self, carType: int) -> bool:
        if self.car[carType-1] == 0:
            return False
        else:
            self.car[carType-1] -= 1
            return True

提交代码评测得到:耗时128ms,占用内存14.4MB。为当前最优策略。

2. 题目二

给出题目二的试题链接如下:

1. 解题思路

这一题的思路其实挺简单,就是看每个人有没有三个时间间隔小于1小时。

那么,我们只需要将每个人出门的所有的时间分离开之后分别进行排序,然后,依次来看每个人第 i i i个时间和第 i + 2 i+2 i+2个时间之间的时间间隔是否小于1小时即可。

2. 代码实现

给出python代码实现如下:

class Solution:
    def alertNames(self, keyName: List[str], keyTime: List[str]) -> List[str]:
        def str2time(t):
            h, m = t.split(":")
            return 60 * int(h) + int(m)
        
        cache = defaultdict(list)
        for name, time in zip(keyName, keyTime):
            cache[name].append(str2time(time))
        ans = []
        for name, timelist in cache.items():
            n = len(timelist)
            timelist = sorted(timelist)
            for i in range(n-2):
                if timelist[i+2] - timelist[i] <= 60:
                    ans.append(name)
                    break
        return sorted(ans)

提交代码后评测得到:耗时708ms,占用内存37.4MB。为当前最优策略。

3. 题目三

给出题目三的试题链接如下:

1. 解题思路

这一题的关键就是构建一个可行的填充方法,然后逐步实现。

我们构建的填充方法为:

  • 考察第i行和第j列,如果rowSum[i] < colSum[j],则将第i行除了第j个元素之外全部置零,第j个元素置为rowSum[i],而后我们更新colSum[j]的和为colSum[j] - rowSum[i](因为已经填充了一个元素),反之亦然。
  • 通过上述方式,我们可以成功的消除掉一行或者一列,将问题化简为一个 ( r o w − 1 , c o l ) (row-1,col) (row−1,col)的矩阵或者 ( r o w , c o l − 1 ) (row,col-1) (row,col−1)的矩阵,不停地重复上述过程,就能最终将矩阵化简为一个单行或者单列的矩阵填充问题,从而问题得以解决。

2. 代码实现

给出python代码实现如下:

class Solution:
    def restoreMatrix(self, rowSum: List[int], colSum: List[int]) -> List[List[int]]:
        n, m = len(rowSum), len(colSum)
        ans = [[0 for _ in range(m)] for _ in range(n)]
        
        def dp(i, j, rowSum, colSum):
            if i == n-1:
                for jj in range(j, m):
                    ans[i][jj] = colSum[jj]
                return
            if j == m-1:
                for ii in range(i, n):
                    ans[ii][j] = rowSum[ii]
                return
            if rowSum[i] <= colSum[j]:
                colSum[j] -= rowSum[i]
                ans[i][j] = rowSum[i]
                for jj in range(j+1, m):
                    ans[i][jj] = 0
                rowSum[i] = 0
                dp(i+1, j, rowSum, colSum)
            else:
                rowSum[i] -= colSum[j]
                ans[i][j] = colSum[j]
                colSum[j] = 0
                for ii in range(i+1, n):
                    ans[ii][j] = 0
                dp(i, j+1, rowSum, colSum)
            
        dp(0, 0, rowSum, colSum)
        return ans

提交代码评测得到:耗时816ms,占用内存26.1MB。

当前最优算法耗时708ms,但是看了一下代码思路,应该是一样的。因此,这里就不再多做展开了。

4. 题目四

给出题目四的试题链接如下:

1. 解题思路

这一题思路其实不难,就是在每一次请求的时候找到对应可用的服务器即可。问题在于怎么找到对应的服务器。

目标服务器是从第i%k个服务器开始第一个可用的服务器。

因此,我们需要维护一个有序的可用的服务器列表,在每一次请求到达时,我们首先需要先释放之前所有的已经使用完毕的服务器,而后在可用的服务器列表中获取第一个大于等于i%k的服务器,最后将这个服务器加入到使用中的服务器列表当中,并且标明释放时间。

故,我们需要存储的数据包括以下三个部分:

  1. 一个计数器,记录每个服务器运行的服务数量;
  2. 一个可用服务器列表,为了保证查找的快速性,我们需要令其有序;
  3. 一个运行中服务器列表,同样,为了确保每一次都能释放最早运行完成的服务器,我们需要令其针对释放时间排序,不过,鉴于我们不需要完全排序,因此,我们使用小顶堆结构进行数据储存。

2. 代码实现

给出最终的python代码实现如下:

import bisect
import heapq

class Solution:
    def busiestServers(self, k: int, arrival: List[int], load: List[int]) -> List[int]:
        counter = defaultdict(int)
        avaliable_servers = [i for i in range(k)]
        wording_servers = []
        for i, (at, lt) in enumerate(zip(arrival, load)):
            while wording_servers != [] and wording_servers[0][0] <= at:
                _, s = heapq.heappop(wording_servers)
                bisect.insort(avaliable_servers, s)
            if avaliable_servers == []:
                continue
            idx = bisect.bisect_left(avaliable_servers, i % k)
            if idx == len(avaliable_servers):
                server = avaliable_servers.pop(0)
            else:
                server = avaliable_servers.pop(idx)
            counter[server] += 1
            heapq.heappush(wording_servers, (at+lt, server))
        counter = sorted(counter.items(), key=lambda x: x[1], reverse=True)
        return [x[0] for x in counter if x[1] == counter[0][1]]

提交代码之后评测得到:耗时1728ms,占用内存38.3MB。

由于当前还没有足够的提交结果,因此,暂时不知道这一个方案在所有方案中的性能比较。

机器视觉中的特征提取【0】:什么是特征提取,特征提取有什么作用? 1.什么是特征提取? 特征提取的英文叫做feature extractor,它是将一些原始的输入的数据维度减少或者将原始的特征进行重新组合以便于后续的使用。简单来说有两个作用:减少数据维度,整理已有的数据特征。 这里我给一个例子来解释特征提取的第二个作用。那就是我们很熟悉的奖学金评定,我们知道学生的文化课成绩,道德分数,以及各种其他竞赛的成绩。摆在奖学金评定委员会面前的任务就是如何知道一个学生是否... 阅读详情

相关推荐

如何解决ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE.

解决ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE

2744

leetcode刷题:最后一次

系列文章目录 leetcode刷题:第一周 leetcode刷题:第二周 leetcode刷题:二分查找 leetcode刷题:双指针 leetcode刷题:广度/深度优先搜索 leetcode刷题:递归 / 回溯 leetcode刷题:动态规划 leetcode刷题:最后一次 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、leetcode例题考试的最大困扰度找到处理最多请求的服务器自除数二倍数对数组强密码检验器寻找比目标字母大的最小字母区域和检索 - 数组

weixin_50835854的博客 401

2025年09月中国电子学会青少年软件编程(Python)等级考试试卷(一级)答案 + 解析

2025年09月中国电子学会青少年软件编程(Python)等级考试试卷(一级)答案 + 解析

伶俐角少儿编程 639

LeetCode笔记:Biweekly Contest 42 比赛记录

LeetCode笔记:Biweekly Contest 42 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 0. 赛后总结 唉,前两周刚和同学吹牛说现在leetcode的比赛基本都能在前10%,发挥好的话能争国内前100,然后这周转头就被打脸,打得啪啪响,国内320/1578,世界1023/6631,连前20%都没卡进..

codename_cys的博客 1720

【GlobalMapper精品教程】027:路径剖面和和视线工具的使用

路径剖面视线工具允许您使用加载的高程数据集沿用户指定的路径获取垂直剖面。要定义生成3D路径剖面所遵循的路径,只需单击鼠标左键选择路径的点,然后石键单击以结束路径。出现一个带有剖面的对话框,允许您设置视线分析或优化端点。

智慧空间实验室 2051

干货|C#上位机与西门子PLC的Profinet协议通信开发(工控机版)

文章摘要: Profinet是西门子主导的工业以太网协议,支持实时通信(RT/IRT),广泛应用于PLC与工控机通信。本文聚焦C#上位机通过S7协议(集成于Profinet接口)高效访问西门子PLC(S7-1200/1500等),提供完整开发方案: 协议基础:解析Profinet三层架构(TCP/IP层、实时层、应用层),对比S7协议优势(开发便捷、跨平台); 开发实践:基于S7NetPlus/Snap7库实现数据读写,涵盖DB块、I/O点等地址规则; 环境配置:工控机(Windows/Linux/统信UO

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1214

LeetCode笔记:Biweekly Contest 43 比赛记录

LeetCode笔记:Biweekly Contest 43 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 3. 算法优化 0. 赛后总结 这一次的比赛整体上还算是顺利吧,虽然也只做出了三题,还错了两次,不过比较前两周的成绩,呵呵,总也算是一个比较开心的事了吧。。。 不过这次终究还算是运气好,大约是最后一题比较难的缘故..

codename_cys的博客 356

【Altium designer】BOM导出 Bill of Materials 如何自定义格式

【Altium designer】如何自定义BOM导出格式 我们用Excel做一个xx.xlt的2003的模版文件,取文件名为:AltiumDesiger PCB BOM Template.xlt 将AltiumDesiger PCB BOM Template.xlt文件存放在:AltiumDesiger 安装目录的Template文件夹内

夜半少年的博客 2717

LeetCode笔记:Biweekly Contest 63

LeetCode笔记:Biweekly Contest 63 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 1. 题目一 给出题目一的试题链接如下: 5885. 使每位学生都有座位的最少移动次数 1. 解题思路 这一题思路挺直接的,我们直接对座位和学生位置进行排序,然后逐位取差值即可。 2. 代码实现 给出python代码实现如下..

codename_cys的博客 187

cesium加载geotiff的 四种方法

本文介绍了在Cesium中加载GeoTIFF数据的两种主要方法。首先解析了核心前置知识,包括坐标系匹配、数据类型区分和性能优化。方法1详细演示了如何将RGB影像GeoTIFF转换为Cesium影像图层,包含从数据解析到Canvas转换的完整代码流程。方法2则针对高程数据(DEM)处理,展示了前端直接解析构建地形网格的方案。文章提供了完整的代码示例和关键实现要点,适用于卫星影像、专题图和数字高程模型等多种GeoTIFF数据类型在三维场景中的可视化需求。

大剑师兰特的GIS世界 395

① Django手把手从零开发个人博客-前言

手把手教你从零开始玩转手把手教你从零开始玩转Django,全面学习并了解django的运行机制、开发全流程及线上部署。Django,全面学习并了解django的运行机制、开发全流程及线上部署。 专栏介绍 本套教程遵循Django的设计思想,开门见山,快速切入主题,拒绝拖沓,在实战中学习每一个知识点,提高学习的趣味性以及个人成就感,并且能快速将所学运用到实际项目中。 将从零手把手带着你一步步完成博客的每一个功能,通过实现博客文章列表页、文章详情页、作者页面等功能来学习和了解django的视图查询模块相关知.

轻编程的博客 515

LeetCode笔记:Biweekly Contest 96

LeetCode笔记:Biweekly Contest 96

codename_cys的博客 882

【教程4>第1章>第12节】通过Verilog读取txt格式数据进行测试并将结果导入到matlab

我们在verilog的testbench中,调用txt文件,将上述正弦样本数据作为测试激励输入到verilog模块中。通过这个方法,可以将一些较为复杂的数据导入到verilog中,进行FPGA数据处理模块的开发。即通过w方式打开一个新的txt文件,然后将verilog的输出保存到XY1.txt文件中。这个部分是txt文件的路径,实际使用时,修改为您自己的路径,或者将txt文件放在和我一样的路径中。这个是数据长度,matlab产生的txt多少长度,这个参数就修改为多少长度。这个txt就是保存这段数据的文件。

FPGA/MATLAB学习教程/源码/项目合作开发 1384

LeetCode笔记:Biweekly Contest 102

LeetCode笔记:Biweekly Contest 102

codename_cys的博客 380

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LeetCode笔记:Biweekly Contest 60

LeetCode笔记:Biweekly Contest 60 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 1. 题目一 给出题目一的试题链接如下: 1991. Find the Middle Index in Array 1. 解题思路 这一题思路挺直接的,就是找到某个元素左侧的元素之和恰好等于右侧的元素之和即可。 而后者则可以..

codename_cys的博客 187

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

LeetCode笔记:Biweekly Contest 70

LeetCode笔记:Biweekly Contest 70 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 1. 题目一 给出题目一的试题链接如下: 2144. Minimum Cost of Buying Candies With Discount 1. 解题思路 这一题直接使用贪婪算法即可实现。 首先我们将价格进行排序,然后价..

codename_cys的博客 5535

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LeetCode笔记:Weekly Contest 219 比赛记录

LeetCode笔记:Weekly Contest 219 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 0. 赛后总结 这一次的比赛怎么说呢,感觉有点不尴不尬的。 要说吧,4道题也都做出来了,耗时老实说也没有特别长,不算错误惩罚的话其实也就56分钟,不到1个小时,整体虽然没有挤进国内前100,好歹也有前4%(116/..

codename_cys的博客 4819

Leetcode 3629. Minimum Jumps to Reach End via Prime Teleportation

Leetcode 3629. Minimum Jumps to Reach End via Prime Teleportation

codename_cys的博客 3868

LeetCode笔记:Weekly Contest 221 比赛记录

LeetCode笔记:Weekly Contest 221 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 0. 赛后总结 昨天才遭遇滑铁卢,本以为成绩已经够差了,结果转头今天就被打脸,成绩比昨天还差,国内468/3397,全球1274/8838,真的是,不想说什么了。 不过这次真心是我自找的,第三题明明是一道简单的题目..

codename_cys的博客 3303

LeetCode笔记:Weekly Contest 229 比赛记录

LeetCode笔记:Weekly Contest 229 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 0. 赛后总结 这周的比赛整体都给跪了,两场比赛都是不顺的要死,昨天的比赛还能归结到看错题目,这次的比赛就真的是没得洗了,第三题超时之后就没有更好的思路了,第四题压根没有一个可行的思路,想到的解法实现出来之后发现都..

codename_cys的博客 2468

LeetCode笔记:Weekly Contest 206 比赛记录

LeetCode笔记:Weekly Contest 206 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 0. 赛后总结 最近不知是换到中文leetcode平台之后水土不服还是怎么样,感觉真的是到了瓶颈期了,最近几次打比赛真的是一次不如一次,做起来异常不顺手。 看了一下头部几位大佬们的做题耗时,基本都还是在10分钟左右..

codename_cys的博客 2016

Leetcode 3600. Maximize Spanning Tree Stability with Upgrades

3600. Maximize Spanning Tree Stability with Upgrades

codename_cys的博客 1751

Leetcode 3448. Count Substrings Divisible By Last Digit

Leetcode 3448. Count Substrings Divisible By Last Digit

codename_cys的博客 1712

Leetcode 3537. Fill a Special Grid

Leetcode 3537. Fill a Special Grid

codename_cys的博客 1627

LeetCode笔记:Weekly Contest 220 比赛记录

LeetCode笔记:Weekly Contest 220 0. 赛后总结 1. 题目一 1. 解题思路 2. 代码实现 2. 题目二 1. 解题思路 2. 代码实现 3. 题目三 1. 解题思路 2. 代码实现 4. 题目四 1. 解题思路 2. 代码实现 0. 赛后总结 这次的比赛结果略惨,只做出3题,然后国内才只有229/3690,世界则是667/9606,都是只有前7%的水平。 但是这次的题目应该算是比较简单的,看了一下,第一名的大佬只花了不到10分钟就搞定了,..

codename_cys的博客 1581

Leetcode 3389. Minimum Operations to Make Character Frequencies Equal

Leetcode 3389. Minimum Operations to Make Character Frequencies Equal

codename_cys的博客 1552
上一篇: LeetCode笔记:Weekly Contest 208 比赛记录
下一篇: LeetCode笔记:Weekly Contest 209 比赛记录
Espresso Macchiato
博客等级 码龄7年 2453粉丝 818原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值