1456定长子串中元音的最大数目
给你字符串 s 和整数 k 。
请返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数。
英文中的 元音字母 为(a, e, i, o, u)。
这道题关于定长滑动窗口,右端移动一个元素时,判断是否时元音字母,是的话累计总和加一,左端移动时,判断是否是元音字母是的话,累计总和减一。
python代码如下:
class Solution:
def maxVowels(self, s: str, k: int) -> int:
left = 0
ans = 0
for i in range(0, k):
if s[i] in "aeiou":
ans += 1
maxans = ans
for right in range(k, len(s)):
if s[right - k] in "aeiou":
ans -= 1
if s[right] in "aeiou":
ans += 1
maxans = max(maxans, ans)
return maxans
643子数组最大平均数
给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。
请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数。
任何误差小于 10-5 的答案都将被视为正确答案。
class Solution:
def findMaxAverage(self, nums: List[int], k: int) -> float:
s2 = 0
for i in range(0, k):
s2 += nums[i]
maxs = s2
for right in range(len(nums) - k):
s2 = s2 - nums[right] + nums[right + k]
if s2 > maxs:
maxs = s2
return maxs/k
2379得到K个黑色涂块的最少涂色数
给你一个长度为 n 下标从 0 开始的字符串 blocks ,blocks[i] 要么是 'W' 要么是 'B' ,表示第 i 块的颜色。字符 'W' 和 'B' 分别表示白色和黑色。
给你一个整数 k ,表示想要 连续 黑色块的数目。
每一次操作中,你可以选择一个白色块将它 涂成 黑色块。
请你返回至少出现 一次 连续 k 个黑色块的 最少 操作次数。
这道题定长滑动窗口,右端如果是黑色,总和减一,左端如果是黑色,总和加一
class Solution:
def minimumRecolors(self, blocks: str, k: int) -> int:
ans=0
left=0
for i in range(0,k):
if blocks[i]=='W':
ans+=1
minans=ans
for right in range(k,len(blocks)):
if blocks[right]=='B':
ans-=1
if blocks[right-k]=='B':
ans+=1
minans=min(minans,ans)
if minans<0:
return 0
return minans
2090半径为k的子数组平均值
给你一个下标从 0 开始的数组 nums ,数组中有 n 个整数,另给你一个整数 k 。
半径为 k 的子数组平均值 是指:nums 中一个以下标 i 为 中心 且 半径 为 k 的子数组中所有元素的平均值,即下标在 i - k 和 i + k 范围(含 i - k 和 i + k)内所有元素的平均值。如果在下标 i 前或后不足 k 个元素,那么 半径为 k 的子数组平均值 是 -1 。
构建并返回一个长度为 n 的数组 avgs ,其中 avgs[i] 是以下标 i 为中心的子数组的 半径为 k 的子数组平均值 。
x 个元素的 平均值 是 x 个元素相加之和除以 x ,此时使用截断式 整数除法 ,即需要去掉结果的小数部分。
class Solution:
def getAverages(self, nums: List[int], k: int) -> List[int]:
n = len(nums)
window_size = 2 * k + 1
avgs = [-1] * n
if window_size > n:
return avgs
# 使用滑动窗口
current_sum = sum(nums[:window_size])
avgs[k] = current_sum // window_size
for i in range(k + 1, n - k):
current_sum = current_sum - nums[i - k - 1] + nums[i + k]
avgs[i] = current_sum // window_size
return avgs
924

被折叠的 条评论
为什么被折叠?



