问题标签 [array-algorithms]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
269 浏览

algorithm - 如何在O(logn)中查找排序数组中数字的出现次数

我有一个排序的整数数组。给定一个数字,即使在最坏的情况下,如何在 O(logn) 中找到该数字的出现次数。

0 投票
4 回答
2601 浏览

array-algorithms - 计算二叉树的单个垂直线中的节点总和

对于二叉树,我想获得落在单个垂直线上的所有节点的总和。我想要每个verticle节点中的节点总和

如果你看上面的三通

我实现了以下算法

  1. 我认为上述算法很好。有人可以确认吗?
  2. 另外,如果不使用 HashMap、arraylist 或 java 的任何此类集合数据类型,我怎么能做到这一点。一种方法是两个数组,一个用于存储负索引(映射到正),一个用于正索引(根的右侧)。但是我们不知道数组的大小。
  3. 一种方法是使用双向链表并在必要时在右/左移动时添加一个节点。我没有得到如何实施这种方法?还有其他简单/更省时的方法吗?
  4. 我imolmeted的上述代码的复杂度是O(n)吗?(不擅长分析时间复杂度,所以问)
0 投票
4 回答
1254 浏览

java - Float.toString() 和 Integer.toString() 是如何工作的?

如何实现将浮点数或整数转换为字符串的算法?我找到了一个链接 http://geeksforgeeks.org/forum/topic/amazon-interview-question-for-software-engineerdeveloper-0-2-years-about-algorithms-13

但我无法理解那里给出的算法

0 投票
2 回答
254 浏览

algorithm - 没有间隔重复的最短子序列

给定一个 N 个整数的未排序数组和一个函数getNextIndexOf (int k),它返回值为 'k' 的下一个元素的索引,如何以最少的调用次数到达最后一个元素(即索引 N)到getNextIndexOf (int k) ?

*换句话说,使用什么值 k 1 , k 2 , ... , k m应该调用 getNextIndexOf(int k) 以便第m调用返回“N”,并且m尽可能小?

**编辑:您可以假设getNextIndexOf可以跟踪它返回的最后一个索引
(例如,就像 C 中的静态局部变量)。第一次调用它只返回第一个元素的索引等于它的参数(int k)。

0 投票
2 回答
4160 浏览

algorithm - 查找任意子数组中所有项目总和的最佳算法是什么

我有一个问题,一个好的解决方案。我希望那里有更好的解决方案。

问题

我有一个包含大约 200,000 个整数的数组。给定两个索引 i1 和 i2,我需要计算 i1 和 i2 之间所有元素的总和。数组中的每个整数都在 1 到 4 之间(包括 1 和 4)。例如:

此操作将执行大约 200,000 次,因此需要非常快。for 循环中的一个简单计数器是 O(n),而且太慢了。数组构建后从不修改,所以有一个相对昂贵的预处理阶段是可以的。

到目前为止我最好的解决方案

该算法在 O(log n) 时间内工作:

首先用零填充原始数组,直到它的长度是 2 的幂。接下来,将数组分成两个相等的部分并存储每个部分的总和。然后将数组分成四部分并存储每个部分的总和。然后是八分之一。继续这样做,直到数组被分成 2 个元素长的部分。对于上面的 8 元素数组,这需要两个步骤:

然后给定两个索引,现在可以在 O(log n) 时间内计算出 subsection_sum。例如,subsection_sum(a, 2, 7) == quarters[1] + halves[1]。

0 投票
1 回答
183 浏览

time-complexity - 对包含大量数据的文件进行排序

考虑一个包含N每行一个单词的单词的文件。该文件太大,因此无法一次在内存中读取整个文件。
我的回答:将文件分成k chunks.So 每个块的大小 一次将一个块x = N/k
读入内存并对其进行排序并写回文件。对所有 k 个块进行排序。
现在做一个k way merge.
分析总时间复杂度。我该怎么做?
对每个块进行排序的时间= xlogx(假设我使用快速排序)
合并k个块的时间= klogk(是吗??)
所以总时间复杂度=??
分析时间复杂度的一周

0 投票
4 回答
353 浏览

array-algorithms - 数组算法

我有一个关于算法的问题要问。我被要求为此编写算法:不要求您为我编写算法,而只是让我知道我需要做什么的有效过程:

有一个由 n 个元素组成的数组,例如书籍或圣经的内容,假设您在其中插入了一个输入字符串“Gaurav Agarwal”。您想要做什么,您需要获取该字符串的数组中存在的唯一元素。只是一个算法,你将如何进一步进行(未排序)

如果您不明白,请告诉我,我会尽力提供帮助。

0 投票
2 回答
208 浏览

algorithm - 范围搜索算法

我得到了一大串具有属性 x 和 y 的对象。我们需要搜索位于两个属性的给定上限和下限之间的所有对象。

我想知道是否有一种有效的算法来实现这一点。

谢谢!

0 投票
3 回答
5167 浏览

algorithm - 在有序数组中找到一对整数,总和为 K

给定一个排序的整数数组,我们如何找到一对和为 K 的整数?

例如array = 1,3,5,6,10, K = 6, 答案是 1 和 5。

时间复杂度应该最小化。

0 投票
2 回答
3977 浏览

data-structures - 浏览历史背后的数据结构

我正在编写一个 QML 文件浏览器。现在,我想实现一个后退前进功能。此功能类似于浏览器的后退和前进功能。例子 :

我从“/home/text/folder1”开始并浏览到“/home/text/folder1/src”。现在我浏览到“/home/text/folder1/src/java”。如果我按两次,我应该在“/home/text/folder1”,我不能再按回(按钮应该是灰色的或以其他方式表明没有更多的“以前的”项目要显示)。

我正在考虑通过双链表来实现这一点。但是,我很难理解我应该在哪里插入新项目到列表中,以及何时应该这样做。

以前面的例子为例:如果不是按两次,我只按一次(我现在在“/home/text/folder1/src”中)。如果我突然转到 "/home/text/folder2" ,现在怎么办?我的双链表现在应该如何?

这是一个数据结构问题,而不是实现,因此不需要代码。