7得票2回答
如何通过引用传递子字符串?

我递归调用一个函数,并传入一个子字符串作为参数,这个子串始终从当前字符串的开头到某个位置。如果我使用C语言,可以将指针传递给字符串的第一个位置,然后是所需的长度。不过,我想通过使用类string来实现相同的结果。是否可能?如果我使用const,编译器是否足够聪明以自己进行优化?更好的是,有没有...

8得票1回答
伙伴分配算法 - 开始堆地址

我目前正在尝试实现《计算机程序设计艺术》第一卷中描述的Buddy Allocator,它利用了给定数据块和其对应伙伴地址之间的重要不变性。计算方法如下... BUDDY(X): X + 2^i if x mod 2^i+1 = 0 X - 2^i if x mod 2^i-1 = 0 W...

14得票9回答
计算1<k<N时的phi(k)

给定一个大的N,我需要迭代所有phi(k),使得 1 &lt; k &lt; N: 时间复杂度必须为O(N logN) 内存复杂度必须是子O(N)(因为N的值将约为10^12) 是否可能?如果可能,如何实现?

72得票23回答
如何将两个数组的交集作为一个新数组获取?

在各种情况下,我遇到过这个问题很多次。虽然我更擅长于使用C或Java编程语言,但这是所有编程语言都普遍存在的问题。 现在我们考虑两个数组(或集合):char[] A = {'a', 'b', 'c', 'd'}; char[] B = {'c', 'd', 'e', 'f'}; 如何将两个数...

8得票1回答
Union+Find算法(不相交集合)的应用

问题陈述: 方程的格式为 A / B = k,其中 A 和 B 是用字符串表示的变量,k 是一个实数(浮点数)。 给定一些查询问题,返回答案。如果答案不存在,则返回 -1.0。 例如:给定 a / b = 2.0, b / c = 3.0. 查询问题为:a / c = ?, b / a...

120得票16回答
寻找前10个搜索词的算法

我目前正在准备一次面试,这让我想起了之前一次面试中被问到的一个问题,大致如下: “你被要求设计一些软件,以持续显示 Google 上前 10 个搜索词。你可以使用提供无限实时流的数据源,该数据源提供当前正在 Google 上进行搜索的搜索词。请描述您将使用哪些算法和数据结构来实现此功能。您需...

35得票8回答
在二叉搜索树上实现迭代器

我最近编写了许多不同的二叉搜索树实现(AVL、splay、treap),想知道是否有一种特别“好”的方法编写迭代器来遍历这些结构。 我目前使用的解决方案是将BST中的每个节点存储指向树中下一个和上一个元素的指针,这将迭代降为标准的链表迭代。然而,我对这个答案并不满意,因为它增加了每个节点的空间...

28得票1回答
Youtube评论系统的排序/排名算法是什么?

Youtube提供了两种排序选项:最新评论和热门评论。 "最新评论" 很简单,只需按其发布日期对评论进行排序即可。但是,“热门评论”似乎比仅按“点赞数”排序要复杂得多。 经过简短的研究,我发现评论的顺序取决于以下几个因素: “点赞”和“点踩”的数量 发布日期 对该评论的回复数量 ...

19得票1回答
如何在长度未知的链表中随机选取一个元素?

如何在遍历一次或者两次未知长度的链表时随机选择一个元素?

14得票3回答
Java.util.ArrayList.sort() 排序算法

我正在查看grepcode上java.util.ArrayList的sort()方法的源代码。它们似乎在小数组(大小小于7)上使用插入排序,而在大数组上使用归并排序。我只是想知道,鉴于他们仅针对大小小于7的数组使用插入排序,这是否会产生很大的差异。在现代机器上,运行时间的差异几乎不会被注意到。...