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

LeetCode笔记:Weekly Contest 359

  • LeetCode笔记:Weekly Contest 359
    • 1. 题目一
      • 1. 解题思路
      • 2. 代码实现
    • 2. 题目二
      • 1. 解题思路
      • 2. 代码实现
    • 3. 题目三
      • 1. 解题思路
      • 2. 代码实现
    • 4. 题目四
      • 1. 解题思路
      • 2. 代码实现
  • 比赛链接:https://leetcode.com/contest/weekly-contest-359

1. 题目一

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

  • 2828. Check if a String Is an Acronym of Words

1. 解题思路

这一题倒是没啥好多说的,把题意翻译成代码语言即可。

2. 代码实现

给出python代码实现如下:

class Solution:def isAcronym(self, words: List[str], s: str) -> bool:if len(words) != len(s):return Falsereturn all(word[0] == ch for word, ch in zip(words, s))

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

2. 题目二

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

  • 2829. Determine the Minimum Sum of a k-avoiding Array

1. 解题思路

这一题我的做法多少也有点暴力,就是从1开始枚举,每增加一个元素的同时block掉它的成对元素,然后直到取满n个元素即可。

2. 代码实现

给出python代码实现如下:

class Solution:def minimumSum(self, n: int, k: int) -> int:block = set()i, cnt = 1, 0res = 0while cnt < n:if i not in block:res += iblock.add(k-i)cnt += 1i += 1return res

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

3. 题目三

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

  • 2830. Maximize the Profit as the Salesman

1. 解题思路

这一题说来惭愧,没有一下子搞出来,一开始的思路跑偏了,想了分段树和greedy的方式,但是怎么也想不到可行的解法,然后看了一下其他大佬们的思路,发现就是一个简单的动态规划的算法,没能自力做出来真的是委实有些丢脸……

2. 代码实现

给出python代码实现如下:

class Solution:def maximizeTheProfit(self, n: int, offers: List[List[int]]) -> int:locs = defaultdict(list)for st, ed, gold in offers:locs[st].append([ed, gold])@lru_cache(None)def dp(idx):if idx >= n:return 0res = dp(idx+1)for ed, gold in locs[idx]:res = max(res, gold + dp(ed+1))return resreturn dp(0)

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

4. 题目四

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

  • 2831. Find the Longest Equal Subarray

1. 解题思路

这一题我的思路上就是首先记录下每一个元素出现的位置,然后考察以每一个元素作为Equal Subarray的核心元素的话,在至多删除k个字符的情况下可以组成的最大长度并记录下来,最后,我们返回这些最大长度的最大值即可。

而考察对于任意给定的字符在至多删除k个字符的情况下可以组成的最大长度的过程,我们用一个滑动窗口即可进行实现。

2. 代码实现

给出python代码实现如下:

class Solution:def longestEqualSubarray(self, nums: List[int], k: int) -> int:locs = defaultdict(list)for i, x in enumerate(nums):locs[x].append(i)cnt = {}for vals in locs.values():i, j, n = 0, 0, len(vals)while j < n:while vals[j]-vals[i] - (j-i) > k:i += 1s, d = j-i+1, vals[j]-vals[i] - (j-i)cnt[s] = min(cnt[s], vals[j]-vals[i] - (j-i)) if s in cnt else vals[j]-vals[i] - (j-i)j += 1return max(cnt.keys())

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

http://www.lryc.cn/news/131849.html

相关文章:

  • 使用Java和ChatGPT Api来创建自己的大模型聊天机器人
  • Maven介绍_下载_安装_使用_原理
  • 算法通关村十一关 | 位运算的规则
  • 【Rust】Rust学习 第十五章智能指针
  • 炒股怎样加杠杆?关于股票杠杠平台比例的选择知识分析
  • 【jenkins】jenkins流水线构建打包jar,生成docker镜像,重启docker服务的过程,在jenkins上一键完成,实现提交代码自动构建的功能
  • Pytest使用fixture实现token共享
  • You have docker-compose v1 installed, but we require Docker Compose v2.
  • nlopt在windows上的安装使用
  • 【React学习】React中的setState方法
  • ATTCK实战系列——红队实战(一)
  • 服务器感染了.360勒索病毒,如何确保数据文件完整恢复?
  • 【idea】社区版idea运行Tomcat
  • 网络安全面试题整理
  • docker使用code-server搭建开发环境 v2.0
  • Python写一个创意五子棋游戏
  • Nvidia Jetson 编解码开发(1)介绍
  • 【操作系统】24王道考研笔记——第一章 计算机系统概述
  • 菜鸟Vue教程 - 实现带国际化的注册登陆页面
  • Mybatis ORDER BY 排序失效 ORDER BY 与 CASE WHEN THEN 排序问题
  • 日常BUG——微信小程序提交代码报错
  • 1048:有一门课不及格的学生
  • 数据结构——B-树、B+树、B*树
  • 2023国赛数学建模思路 - 案例:FPTree-频繁模式树算法
  • GPT系列总结
  • 【福建事业单位-综合基础知识】05民法典
  • 微服务篇
  • C++ 的关键字(保留字)完整介绍
  • C#小轮子:MiniExcel,快速操作Excel
  • Ribbon负载均衡