当前位置: 首页 > 知识库问答 >
问题:

用特殊的归约式|(i*2)总结一个数组

商松
2023-03-14

我目前正在处理一个在网上发现的java问题。

我们假设我们有一个数组,它有几千个,如果不是数百万个条目的话。目标是高效快速地得到数组的全部和。

第一种方法是简单地总结它。这是我解决它的方法:

for (int i = 0; i < array_size; i++) sum += array[i];

另一条路是艰难的。在在线任务中,描述了使用某种还原。你应该把所有相邻的元素加起来,然后每秒钟加一次,然后每四分之一,每八分之一。。。在最后到达[0][max]之前,[0]是数组的总和。

如果有人能帮助我或引导我走向正确的方向,我将非常感激。

共有1个答案

陈刚洁
2023-03-14

您的实现已经是O(n)-您无法再做得更好了。你需要O(1)-空间,所以这也不能减少。

您只能尝试改进运行时(而不是复杂性),例如通过使其对缓存更友好或将其隔离,希望这可以提高速度(但对于像添加这样简单的任务,我认为内存访问是一个瓶颈)。

 类似资料:
  • 本文向大家介绍Oracle 数据库特殊查询总结,包括了Oracle 数据库特殊查询总结的使用技巧和注意事项,需要的朋友参考一下 1. 查询本节点及本节点以下的所有节点: 2. 查询节点中所有的层级关系 3. 对数据库表结构的操作 4. 其他查询 6. loop 的使用 7. 存储过程的书写 以上所述是小编给大家介绍的Oracle 数据库特殊查询总结,希望对大家有所帮助!

  • 你也许会认为扩展中定义的函数应该直接通过return关键字来返回一个值,比如由你自己来生成一个zval并返回,就像下面这样: ZEND_FUNCTION(sample_long_wrong) { zval *retval; MAKE_STD_ZVAL(retval); ZVAL_LONG(retval, 42); return retval; } 但是,上面的

  • 本文向大家介绍Shell中特殊字符的用法总结大全,包括了Shell中特殊字符的用法总结大全的使用技巧和注意事项,需要的朋友参考一下 前言 众所周知shell既是类Unix操作系统的命令解析器,用于解释执行用户输入的一连串命令,它类似于DOS下的command和后来Windows的cmd.exe。同时shell也是一种程序设计语言。作为命令解释型的脚本语言,它交互式解释和执行用户输入的命令或者自动地

  • 本文向大家介绍python中实现定制类的特殊方法总结,包括了python中实现定制类的特殊方法总结的使用技巧和注意事项,需要的朋友参考一下 看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的。 __slots__我们已经知道怎么用了,__len__()方法我们也知道是为了能让class作用于len()函数。 除此之外,Python的clas

  • 本文向大家介绍java解一个比较特殊的数组合并题,包括了java解一个比较特殊的数组合并题的使用技巧和注意事项,需要的朋友参考一下 给定两个排序后的数组A和B,其中A的末端有足够的空间容纳B,编写一个方法将B合并到A并排序。 拿到这个题后,最直接的想法就是比较A和B中的元素,并按顺序插入数组,直到遍历完A和B中的所有元素。但是这样做会有一个不好的地方:如果元素的插入位置在数组A的前端,那就必须将原

  • 在之前的章节里,我们讨论了列表,Lisp 最多功能的数据结构。本章将演示如何使用 Lisp 其它的数据结构:数组(包含向量与字符串),结构以及哈希表。它们或许不像列表这么灵活,但存取速度更快并使用了更少空间。 Common Lisp 还有另一种数据结构:实例(instance)。实例将在 11 章讨论,讲述 CLOS。 4.1 数组 (Array) 在 Common Lisp 里,你可以调用 ma