python - 最多有 K 个元素的最大连续子数组
问题描述
有没有办法在 O(N) 复杂度中找到最多 K 个元素的最大连续子数组。
或者不存在这种可能性。
例如:
A = [4, -2, 6, 4, -2, 6]
K = 3
因为中间的 6 和 4 等于 10,所以函数应该返回 10。
PS 与 O(N K) 很容易,问题是在 O(N) 中是否可能这是一个在 O(N K) 时间内解决的算法:
def maxContiguousFragment(arr):
b = max(arr)
s = 0
for i in arr:
s = max(s + i, i)
b = max(s, b)
return b
def max_K_Subarray(arr,k):
return max(maxContiguousFragment(
arr[i:i+k] for i in range(len(arr)-k)))
解决方案
推荐阅读
- android - 如何在 Windows PC 中提取/打开游戏 obb 文件?
- mysql - RDS MYSQL 日志轮换
- c# - 如何知道子窗口是打开还是关闭?WPF
- r - R Shiny - 多页可编辑数据表在编辑后跳转到第 1 行
- mongodb - 如何将 JSONArray 保存在 mongoDB 中动态创建的集合中
- game-maker - 我无法让基于 bbox 的 gml 冲突正常工作。我的横版没问题。它只是我的垂直
- python-3.x - Pytesseract:尝试使用 Image_to_Boxes() API 时文件丢失
- logging - Filebeat 不发送信息日志
- c# - 创建要在 Microsoft Store 上上传的 UWP 捆绑文件时未生成 appxUpload 文件
- javascript - 有没有办法使用 sinon 存根方法,其中方法有两个参数