1. 牛客周赛Round139赛事解析
作为一名参加过多次编程竞赛的老选手,我最近刚打完牛客周赛的第139轮比赛。这类周赛对于准备校招笔试和提升算法能力特别有帮助,今天就来详细拆解下这轮比赛的题目特点、解题思路以及备赛经验。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 比赛整体情况分析
2.1 题目难度分布
这轮比赛延续了牛客周赛的一贯风格,共4道编程题:
- 第一题:基础语法题(通过率85%)
- 第二题:简单算法题(通过率62%)
- 第三题:中等难度算法(通过率37%)
- 第四题:较难的综合题(通过率12%)
从通过率可以看出,题目难度梯度设置合理,适合不同水平的选手。我建议新手至少要把前两题做出来,而有经验的选手应该争取在90分钟内完成前三题。
2.2 参赛选手特点
根据赛后统计:
- 参赛人数:约4500人
- 高校学生占比:78%
- 有工作经验的选手:22%
- AK(全部做对)人数:约300人
3. 题目详解与解题思路
3.1 第一题:字符串处理
题目要求实现一个字符串大小写转换的功能。这是典型的签到题,主要考察基础编程能力。
python复制def convert_case(s):
return s.swapcase()
注意:虽然Python有内置方法,但有些选手会自己实现转换逻辑,这时候要特别注意ASCII码的加减操作(大写字母A-Z是65-90,小写a-z是97-122)
3.2 第二题:数组操作
题目给出一个整数数组,要求找出所有满足条件的子数组。这道题需要用到前缀和技巧。
python复制def count_subarrays(arr, k):
prefix = [0]
for num in arr:
prefix.append(prefix[-1] + num)
count = 0
for i in range(len(arr)):
for j in range(i, len(arr)):
if prefix[j+1] - prefix[i] == k:
count += 1
return count
优化思路:可以用哈希表将时
