|
1
5
要得到组成和的实际数字,你应该保留另一个向量。
时间的复杂性是
这是一个很好的解决方案,但在实践中并不真正有用,或者至少在你的情况下不有用。 他是我建议的方法的专家:
您可能应该做一些错误检查,并可能将最后一个和存储在类中,这样就不允许调用
解决方案2-随机算法
现在,这更容易了。保留两个列表:
无论何时需要在集合中插入一个数字,也要将其添加到两个列表中的一个列表中(不重要,但要随机进行,这样分布相对均匀)。更新
每当你需要从集合中删除一个数字时,找出它在两个列表中的哪一个。你可以用线性seach来做这个,只要你没有很多(这一次很多意味着超过10000,甚至100000在快速计算机上,假设你不经常和快速连续地做这个操作。不管怎样,如果需要的话,可以对线性搜索进行优化)。找到号码后,将其从列表中删除。更新
每当你需要找出你的集合中是否有数字,这个和就是一个数。
在算法的末尾,列表
我认为这个算法应该适合你的需要。它可以很好地处理对数据集的更改,并在高数字计数下工作良好。它也不取决于数字有多大,如果你有大的数字,这是非常有用的。 如有任何问题,请发帖。 |
|
|
2
5
这是我的算法。它运行在
这里有一个改进的版本,可以删减集合:
最后一个在5毫秒内解决了100000个问题(但这是算法的最佳情况,有了现实数据,速度会变慢)。 对于您的使用,这个算法可能足够快(我看不到任何明显的改进)。如果你输入10000个随机价格在0到20之间的产品,你的目标是总计500,这将在0.04秒内在我的笔记本电脑上解决。
编辑:我刚在维基百科上读到最著名的算法是
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |