解题思路:使用滑动窗口,找到区间内最小值,并从这个最小值开始继续滑动。
注意事项:
参考代码:
n, k = map(int, input().split())
nums = list(map(int, input().split()))
i = 0
ans = 0
while i < n:
if i > n - k:
# 当接近数组末尾时,特别处理
break
min_value = min(nums[i:i+k])
min_idx = nums.index(min_value, i, i+k)
for x in range(i, min(n, i+k)):
nums[x] -= min_value
i = min_idx + 1
ans += min_value
# 处理数组末尾的元素
for x in range(n):
ans += nums[x]
print(ans)
0.0分
1 人评分
简单编码 (C++代码)浏览:678 |
Hello, world! (C语言代码)浏览:1201 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:554 |
简单的a+b (C++语言代码)浏览:860 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:507 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:609 |
蛇行矩阵 (C语言代码)浏览:536 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:1171 |
关于float,double变量的几点说明浏览:1810 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:706 |