- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
假设我有 N 个整数,其中 N 可以变得很大,但每个整数都保证在 0 和某个上限 M 之间,其中 M 很容易适合带符号的 32 位字段。
如果我想计算这 N 个整数的平均值,我不能总是在同一个带符号的 32 位空间中对它们进行求和和除法 - 如果 N 太大,分子就有溢出的风险。此问题的一种解决方案是仅使用 64 位字段进行计算,以保持更大的 N,但此解决方案无法扩展 - 如果 M 是一个大的 64 位整数,则会出现同样的问题。
有谁知道可以计算同一位空间中正整数列表的平均值的算法(最好是 O(N))?没有做一些廉价的事情,比如使用两个整数来模拟一个更大的整数。
最佳答案
假设您最初知道M
,您可以保留两个变量,一个是到目前为止的答案除以M,另一个是余数。
例如,在 C++ 中:
int ans = 0, remainder = 0;
for (int i=0;i<N;i++) {
remainder += input[i]; // update remainder so far
ans += remainder/N; // move what we can from remainder into ans
remainder%=N; // calculate what's left of remainder
}
在循环结束时,在ans
中找到答案,在remainder
中找到余数(如果您需要截断以外的舍入方法)。
此示例适用于最大输入数 M+N 适合 32 位 int 的情况。
请注意,这应该适用于正整数和负整数,因为在 C++ 中,/
运算符是除法运算符,而 %
实际上是余数运算符(实际上不是模运算符)。
关于algorithm - 有限空间平均计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16114832/
我有一个关于复杂性的简单问题。我在 Java 中有这段代码: pairs是 HashMap包含 Integer作为键,它的频率为 Collection作为一个值。所以: pairs = new Has
对于我的应用程序,我需要在 Coq 中使用和推理有限映射。谷歌搜索我发现 FMapAVL 似乎非常适合我的需求。问题是文档很少,我还没有弄清楚我应该如何使用它。 作为一个简单的例子,考虑以下使用对列表
我有一个主表tblAssetMaster A和一个移动表tblMovement M。 我想提取所有 Assets 及其当前位置,因此需要获取每个 Assets 的最新移动条目。 字段 A: Asset
我想让我的网站内容居中,但仅限于网页的特定宽度。所以当它超过 500px 时,我希望内容被修复,无法进一步拉伸(stretch)。无论如何都要这样做,还是我最好把所有东西都修好?希望有意义的是添加一些
我正在尝试批量删除 Backbone 模型的集合,如下所示...... collection.each(function(model, i){ model.destroy(); }); 我发现当每
我想要一个软件环境,在其中我可以在具有特定资源的硬件上测试我的软件的速度。例如,当我的主机硬件是具有 12GB RAM 的 3GHz 四核 amd64 时,该程序在具有 24 Mb RAM 的 800
在 Eclipse 中,我得到了 BigInteger.valueOf(2).pow(31093) 的值,但没有得到 BigInteger.valueOf(2).pow(31094) 的值(它是空的)
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
我想将 2 个表从本地 sql server 2000 上传到托管的 mysql。第一个表有 17 列和 680 行,其他 10 列和 8071 行。 我首先使用 xampp mysql 尝试离线,它
我在 S3 中自动生成并保存了静态 html 文件。有时文件大小达到 2mb。是否可以使用javascript来获取html文件的一部分,显示它,当用户到达页面底部时,获取下一部分等等? 最佳答案 X
我是一名优秀的程序员,十分优秀!