LeetCode笔记:Weekly Contest 327

news/2025/2/14 6:24:25/
  • LeetCode笔记:Weekly Contest 327
    • 0. 做题感受
    • 1. 题目一
      • 1. 解题思路
      • 2. 代码实现
    • 3. 题目二
      • 1. 解题思路
      • 2. 代码实现
    • 2. 题目三
      • 1. 解题思路
      • 2. 代码实现
    • 4. 题目四
      • 1. 解题思路
      • 2. 代码实现
  • 比赛链接:https://leetcode.com/contest/weekly-contest-327/

0. 做题感受

这次的题目一看大佬们的用时,最快的居然也花了将近30min,把我吓了一大跳,结果真正做下来就有点无语了,就是超级繁琐的各种分类讨论以及边界条件,难度倒是感觉还好,但是真要再做一遍估计还得去掉半条命,简直了……

1. 题目一

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

  • 2529. Maximum Count of Positive Integer and Negative Integer

1. 解题思路

这一题有序数列的话其实可以二分找边界,不过我这边就比较暴力的直接遍历统计了一遍就是了……

2. 代码实现

给出python代码实现如下:

class Solution:def maximumCount(self, nums: List[int]) -> int:pos, neg = 0, 0for x in nums:if x < 0:neg += 1elif x > 0:pos += 1return max(pos, neg)

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

3. 题目二

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

  • 2530. Maximal Score After Applying K Operations

1. 解题思路

这一题其实就是不断地去最大元素进行操作,然后更新数组就行了。

问题就在于如何快速地更新数组以及取最大值,我是采用了堆排,不过全有序排序也问题不大就是了。

2. 代码实现

给出python代码实现如下:

class Solution:def maxKelements(self, nums: List[int], k: int) -> int:nums = [-x for x in nums]score = 0heapq.heapify(nums)for _ in range(k):x = -heapq.heappop(nums)score += xheapq.heappush(nums, - ceil(x/3))return score

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

2. 题目三

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

  • 2531. Make Number of Distinct Characters Equal

1. 解题思路

这一题我这边的做法就是一个非常暴力的分类讨论,首先统计两个单词之中出现了那些字符,然后分别考察交换两个字符之后可能出现的情况,将所有情况分别枚举一边就行了……

2. 代码实现

给出python代码实现如下:

class Solution:def isItPossible(self, word1: str, word2: str) -> bool:cnt1 = Counter(word1)cnt2 = Counter(word2)diff = len(cnt1) - len(cnt2)for ch1 in cnt1:for ch2 in cnt2:if ch1 == ch2:change = 0elif cnt1[ch1] == 1 and cnt2[ch2] == 1:if cnt2[ch1] > 0 and cnt1[ch2] > 0:change = 0elif cnt2[ch1] > 0 and cnt1[ch2] == 0:change = 1elif cnt2[ch1] == 0 and cnt1[ch2] > 0:change = -1else:change = 0elif cnt1[ch1] == 1 and cnt2[ch2] > 1:if cnt2[ch1] > 0 and cnt1[ch2] > 0:change = -1elif cnt2[ch1] > 0 and cnt1[ch2] == 0:change = 0elif cnt2[ch1] == 0 and cnt1[ch2] > 0:change = -2else:change = -1elif cnt1[ch1] > 1 and cnt2[ch2] == 1:if cnt2[ch1] > 0 and cnt1[ch2] > 0:change = 1elif cnt2[ch1] > 0 and cnt1[ch2] == 0:change = 2elif cnt2[ch1] == 0 and cnt1[ch2] > 0:change = 0else:change = 1else:if cnt2[ch1] > 0 and cnt1[ch2] > 0:change = 0elif cnt2[ch1] > 0 and cnt1[ch2] == 0:change = 1elif cnt2[ch1] == 0 and cnt1[ch2] > 0:change = -1else:change = 0if change == -diff:return Truereturn False

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

4. 题目四

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

  • 2532. Time to Cross a Bridge

1. 解题思路

这一题其实思路不怎么复杂,就是按照题意完全用代码翻译一下,然后模拟一下其完整的过程就可以了。

不过,如前所述,问题就是繁琐……

2. 代码实现

给出python代码实现如下:

class Solution:def findCrossingTime(self, n: int, k: int, time: List[List[int]]) -> int:eff = sorted([(t[0] + t[2], i) for i, t in enumerate(time)], reverse=True)orders = [0 for _ in range(k)]for i in range(k):orders[eff[i][1]] = iright, left = 0, 1q = [(left, orders[i], i) for i in range(k)]heapq.heapify(q)waited = []t = 0while q or waited:while q == [] and waited:nxt, side, order, wid = heapq.heappop(waited)if n > 0 or side == right:t = max(t, nxt)heapq.heappush(q, (side, order, wid))while waited and waited[0][0] <= t:_, side, order, wid = heapq.heappop(waited)heapq.heappush(q, (side, order, wid))if q == []:breakside, order, wid = heapq.heappop(q)if side == left:if n == 0:continuet += time[wid][0]heapq.heappush(waited, (t + time[wid][1], right, order, wid))n -= 1else:t += time[wid][2]heapq.heappush(waited, (t + time[wid][3], left, order, wid))return t      

提交代码评测得到:744ms,占用内存21.2MB。


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

相关文章

Qt之对话框

文章目录一、对话框的概念二、与QWidget的区别三、对话框2种显示方法四、对话框返回值的概念本节示例提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、对话框的概念 对话框是和用户简短交互的一种窗口。如&#xff1a;登录界面&#xff0c;关于界面…

哈希(C++)

C语言总结在这常见八大排序在这作者和朋友建立的社区&#xff1a;非科班转码社区-CSDN社区云&#x1f496;&#x1f49b;&#x1f499;期待hxd的支持哈&#x1f389;&#x1f389;&#x1f389;最后是打鸡血环节&#xff1a;想多了都是问题&#xff0c;做多了都是答案&#x1f…

前端开发视角 入门springboot

> 本文章适合前端人员并且对java一直不了解甚至听到java就恐惧的前端开发人员。在前端开发很少接触后端语言&#xff0c;即使接触也是node一类的框架express、koa2。> 本文就类比着前端项目来入门springboot开发。**文章目标&#xff1a;**- 对比springboot项目结构和vue…

【北邮果园大三上】运筹学期中后

运筹学后半段 第五章 动态规划 最优化原理&#xff0c;可以归结为一个递推公式 现实应用&#xff1a;比如最优路径、资源分配、生产计划和库存等 5.1 动态规划的最优化原理及其算法 5.1.1 求解多阶段决策过程的方法 例如&#xff1a;最短路径问题 求A到B的最短路径&#xff…

2023年玩兔年小游戏《兔兔保卫萝卜战》赢新年祝福「钱兔无量」

PS&#xff1a;粉丝可以免费领源码&#xff0c;私信我或者评论666即可~~~~~~~~ 导读 | 世界杯虽已闭幕&#xff0c;但其带给我们的精彩&#xff0c;仿佛就在昨天&#xff0c;想一想&#xff0c;还是有一种爽劲&#xff0c;不知道大家是否也这样&#xff1f;转眼就到了2023年&a…

【MySQL】十一,存储引擎

查看存储引擎 查看mysql提供什么存储引擎 设置系统默认的存储引擎 查看默认的存储引擎 show variables like %storage_engine%; SELECT default_storage_engine;修改默认的存储引擎 如果在创建表的语句中没有显式指定表的存储引擎的话&#xff0c;那就会默认使用 InnoDB 作…

2022年度总结——平凡之路

文章目录一、缘起二、回首2022三、展望2023四、结束语我是平凡的人&#xff0c;总要接受普通平凡的自己。一、缘起 我注册CSDN的时间是2021-07-25&#xff0c;这是一个值得纪念的时间。不过那时候的我并没有写博客&#xff0c;只是在CSDN游览一些文章&#xff0c;查看资料&…

2023新年红包,兔年HTML红包页面代码【2023新年快乐_附源码】

文章目录一.新年红包&#xff0c;兔年HTML红包页面1.1 资源获取和效果预览二.代码讲解&#xff08;Html文件&#xff09;三.Html文件代码展示&#xff08;需要全部源码请到文章开头链接处下载&#xff09;一.新年红包&#xff0c;兔年HTML红包页面 1.1 资源获取和效果预览 1.…