华为od统一考试B卷【阿里巴巴找黄金宝箱(V)】Python 实现

题目:

樵夫阿里巴巴在去砍柴的路上,无意中发现了强盗集团的藏宝地,藏宝地有编号从O-N的箱子,每个箱子上面贴有一个数字.
阿里巴巴念出一个咒语数字k(k<N),找出连续k个宝箱数字和的最大值一,并输出该最大值。输入描述
第一行输入一个数字字串,数字之间使用逗号分隔,例如: 2,10,-3,-8,40,5。1s字串中数字的个数≤100000
-10000≤每个数字≤10000
第二行输入咒语数字,例如:4,咒语数字大小小于宝箱的个数输出描述
连续k个宝箱数字和的最大值,例如:39示例1:
输入
2,10,-3,-8,40,54
输出39示例2:输入81输出8
思路:

1:题目最关键的—句话:找出连续k个宝箱数字和的最大值。

2:这不就是滑动窗口,长度为k的最大窗口和,leetcode 原题,最基础的滑动窗口题目。3: leetcode满分题解!

要求:

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++262144K,其他语言524288K64bit lO Format: %olld
语言限定:
C(clang11) ,C++ (clang++11) , Pascal (fpc 3.0.2) , Java (javac 1.8) ,Python2 (2.7.3),
PHP(7.4.7),C#(mcs5.4), ObjC(gcc 5.4), Pythen3(3.9), JavaScript. Node(12.18.2), JavaScript V8(6.0.0),Sqlite(3.7.9),R(4.0.3),Go(1.14.4),Ruby(2.7.1),Swift(5.3), matlab(Octave 5.2), Pypy2(pypy2.7.13),
Pypy3(pypy3.6.1),Rust(1.44),Scala(2.11.12), Kotlin(1.4.10),Groovy(3.0.6),TypeScript(4.1.2),Mysql(8.0)
Code:

# coding:utf-8
#JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 
import functools
import sys
from collections import Counter, defaultdict
import collections
import copy
from itertools import permutations
import re
import math
import sys
import bisect

def maximumSubarraySum(nums, k) :
        ans = 0
        cnt = Counter(nums[:k - 1])
        s = sum(nums[:k - 1])
        for in_, out in zip(nums[k - 1:], nums):
            cnt[in_] += 1  # 移入元素
            s += in_
            if len(cnt) == k:
                ans = max(ans, s)
            cnt[out] -= 1  # 移出元素
            if cnt[out] == 0:
                del cnt[out]  # 重要:及时移除个数为 0 的数据
            s -= out
        return ans
 
nums = [int(x) for x in input().split(",")]
k = int(input())
print(maximumSubarraySum(nums, k))
 

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

linkenzhou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值