作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
maximum subarray sum是计算机科学中的著名问题。
至少有两种解决方案:
在视频中 tutorial作者提到的暴力方法是O(n^2)
,阅读another answer一个人认为是 O(n^2)
,另一个人认为是 O(n^3)
。
蛮力是 O(n^2)
还是 O(n^3)
?更重要的是,您能否说明您对蛮力方法执行了哪些分析才能知道它是 O(?)
?
最佳答案
好吧,这取决于力的强度。
如果我们生成所有 (i, j): i <= j
对并计算它们之间的和,它是O(n^3)
:
....
for (int i = 0; i < n; i++)
for (int j = i; j < n; j++) {
int sum = 0;
for (int k = i; k <= j; k++)
sum += a[k];
if (sum > max)
max = sum;
}
如果我们从所有位置开始并计算运行总和,则为 O(n^2)
:
....
for(int i = 0; i < n; i++) {
int sum = 0;
for (int j = i; j < n; j++) {
sum += a[j];
if (sum > max)
max = sum;
}
}
关于arrays - 为什么最大和子数组是暴力 O(n^2)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41904746/
用户将输入重量阈值、物体数量以及 3 个物体的重量和成本。输出应该是背包图,并且应该显示最优解。 重量应该最大,成本应该最小。 示例输出: w=60 n=3 w = 10 w2 = 35 w3 = 3
所以我在学习 Python 的同时从“Violent Python”开始黑客攻击,我遇到了一个问题这是我的代码: import optparse import socket from socket i
我是一名优秀的程序员,十分优秀!