LeetCode笔记:Weekly Contest 301
Posted Espresso Macchiato
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode笔记:Weekly Contest 301相关的知识,希望对你有一定的参考价值。
1. 题目一
给出题目一的试题链接如下:
1. 解题思路
这一题其实仔细分析一下的话答案是比较明显的,就是总数的一半。
但是其中存在一个特例,就是如果某一个元素的个数大于总数的一半时,那么它就是答案。
因此,我们只需要取总数的一半与最大元素的两者较大值进行返回即可。
2. 代码实现
给出python代码实现如下:
class Solution:
def fillCups(self, amount: List[int]) -> int:
return max(max(amount), (sum(amount)+1) // 2)
提交代码评测得到:耗时82ms,占用内存13.8MB。
2. 题目二
给出题目二的试题链接如下:
1. 解题思路
这一题其实也简单,只要每一次都确保当前的记录当中有数字且有序即可。
2. 代码实现
给出python代码实现如下:
class SmallestInfiniteSet:
def __init__(self):
self.nums = [i for i in range(1, 1001)]
self.max_elem = 1000
def popSmallest(self) -> int:
if self.nums == []:
self.nums = [i + self.max_elem for i in range(1, 1001)]
self.max_elem += 1000
return self.nums.pop(0)
def addBack(self, num: int) -> None:
while num > self.max_elem:
self.nums.extend([i + self.max_elem for i in range(1, 1001)])
self.max_elem += 1000
idx = bisect.bisect_left(self.nums, num)
if idx >= len(self.nums) or self.nums[idx] != num:
self.nums.insert(idx, num)
return
提交代码评测得到:耗时202ms,占用内存14.6MB。
3. 题目三
给出题目三的试题链接如下:
1. 解题思路
这一题要想能够成功其实只需要满足如下三个条件即可:
L
和R
的数目两字符串相同;- 对于任意一个位置,目标字符串左侧的
L
总是不少于起始字符串,同样的,目标字符串右侧的R
也有总是不多于起始字符串; - 对于任意一个对应的
L
,在两字符串的左侧总是有相同个数的R
;
2. 代码实现
给出python代码实现如下:
class Solution:
def canChange(self, start: str, target: str) -> bool:
cnt1, cnt2 = Counter(start), Counter(target)
if cnt1["L"] != cnt2["L"] or cnt1["R"] != cnt2["R"]:
return False
lcnt, rcnt = 0, 0
for ch1, ch2 in zip(start, target):
if ch1 == "L":
lcnt += 1
elif ch1 == "R":
rcnt +=1
if ch2 == "L":
lcnt -= 1
elif ch2 == "R":
rcnt -=1
if lcnt > 0 or rcnt < 0:
return False
lr1, lr2 = [], []
cnt1, cnt2 = 0, 0
for ch1, ch2 in zip(start, target):
if ch1 == "R":
cnt1 += 1
elif ch1 == "L":
lr1.append(cnt1)
if ch2 == "R":
cnt2 += 1
elif ch2 == "L":
lr2.append(cnt2)
return all(x == y for x, y in zip(lr1, lr2))
提交代码评测得到:耗时629ms,占用内存17.1MB。
4. 题目四
给出题目四的试题链接如下:
这一题坦率地说挺伤人的,因为大佬们9分钟就能够搞定4道题,我却悲剧地做了一下午依然没有搞定,甚至说到最后跑去看大佬们的解答思路都没有看得太明白,真的挺伤的,唉……
如果有哪位读者大佬知道这题的思路的话,请务必在评论区告知一下,万分感谢!
以上是关于LeetCode笔记:Weekly Contest 301的主要内容,如果未能解决你的问题,请参考以下文章