周赛情况
34 分钟完成 3 题,0 WA 。第四题没什么思路。
6315. 统计范围内的元音字符串数
简单题
class Solution:
def vowelStrings(self, words: List[str], left: int, right: int) -> int:
return sum(word[0] in ['a', 'e', 'i', 'o', 'u'] and word[-1] in ['a', 'e', 'i', 'o', 'u'] for word in words[left:right+1])
6316. 重排数组以得到最大前缀分数
要前缀和中正数最多,只要按正数、0、负数的顺序排好就行,即降序排列。
class Solution:
def maxScore(self, nums: List[int]) -> int:
nums.sort(reverse=True)
ans = 0
if nums[0] <= 0:
return 0
p_sum = 0
for num in nums:
p_sum += num
if p_sum > 0:
ans += 1
return ans
6317. 统计美丽子数组数目
花了二十分钟看出来问题,如果子数组异或和为 0 ,则为美丽子数组。那么我们可以参考前缀和,定义前缀异或和。而前缀异或和中存在相同元素时,说明其间的一段子数组异或和为 0 。那么只要遍历前缀异或和数组即可。
class Solution:
def beautifulSubarrays(self, nums: List[int]) -> int:
p_xor = []
cur = 0
for num in nums:
cur ^= num
p_xor.append(cur)
cnt = Counter()
cnt[0] = 1 # 0 默认计数为 1
ans = 0
for num in p_xor:
ans += cnt[num]
cnt[num] += 1
return ans
Comments NOTHING