- LeetCode笔记:Weekly Contest 349
- 1. 题目一
- 1. 解题思路
- 2. 代码实现
- 2. 题目二
- 1. 解题思路
- 2. 代码实现
- 3. 题目三
- 1. 解题思路
- 2. 代码实现
- 4. 题目四
- 1. 题目一
- 比赛链接:https://leetcode.com/contest/weekly-contest-349
1. 题目一
给出题目一的试题链接如下:
- 2733. Neither Minimum nor Maximum
1. 解题思路
这一题我实现的比较暴力,就是先找到最大最小值,然后顺序检索找出第一个不等于这两个值的数返回。
2. 代码实现
给出python代码实现如下:
class Solution:def findNonMinOrMax(self, nums: List[int]) -> int:_min = min(nums)_max = max(nums)for x in nums:if x != _min and x != _max:return xreturn -1
提交代码评测得到:耗时381ms,占用内存16.4MB。
2. 题目二
给出题目二的试题链接如下:
- 2734. Lexicographically Smallest String After Substring Operation
1. 解题思路
这一题思路整体也还好,就是找到第一段不包含a
的最长连续子串,将其减一即可。
2. 代码实现
给出python代码实现如下:
class Solution:def smallestString(self, s: str) -> str:n = len(s)idx = 0l, r = -1, -1while idx < n and s[idx] == "a":idx += 1l = idxwhile idx < n and s[idx] != "a":idx += 1r = idxif l == n:return s[:-1] + "z"def op(ch):if ch == "a":return "z"return chr(ord(ch)-1)sub = "".join(op(ch) for ch in s[l:r])return s[:l] + sub + s[r:]
提交代码评测得到:耗时255ms,占用内存22.5MB。
3. 题目三
给出题目三的试题链接如下:
- 2735. Collecting Chocolates
1. 解题思路
今天状态真的是不好,这道题把我卡了n久,简直了……
本质上来说,就是遍历一下最大移动距离为0到n-1的情况,然后对于任意最大移动距离为k的情况下,对于任意一个点所需的最小cost就是其本身到之前k个点当中最小值的大小,我们用一个动态规划即可快速得到。
综上,我们即可得到我们的最终答案。
2. 代码实现
给出python代码实现如下:
class Solution:def minCost(self, nums: List[int], x: int) -> int:n = len(nums)dp = [[cost for cost in nums] for _ in range(n)]for i in range(1, n):for j in range(n):dp[i][j] = min(dp[i-1][j], nums[(j-i+n) % n])costs = [sum(s) + i * x for i, s in enumerate(dp)]return min(costs)
提交代码评测得到:耗时5046ms,占用内存25.3MB。
4. 题目四
给出题目四的试题链接如下:
- 2736. Maximum Sum Queries
这道题我放弃了,实在是毫无思路……
如果有大佬知道怎么做的话请务必赐教一下,感激不尽!