📜  高盛面试经历| 31套(实习用)

📅  最后修改于: 2021-11-17 09:49:29             🧑  作者: Mango

高盛
以上是今年校园实习中GS笔试问的CS问题。
  • 有36匹马。我们必须找出最快的三匹马。在一场比赛中,最多可以跑 6 匹马。最少需要多少场比赛才能在不使用秒表的情况下获得结果?

    我们可以先用6-6匹马进行6场比赛,然后在每场比赛中获得最快的马。
    A1、A2、A3、A4、A5、A6
    B1、B2、B3、B4、B5、B6
    C1、C2、C3、C4、C5、C6
    D1、D2、D3、D4、D5、D6
    E1、E2、E3、E4、E5、E6
    F1、F2、F3、F4、F5、F6
    这里 A1>A2>A3>A4>A5>A6 和其他的一样。
    现在让我们选择每场比赛中最快的马,然后在他们之间进行一场比赛。令结果为A1>B1>C1>D1>E1>F1。我们得到最快的马(A1)。
    现在我们需要找到第二和第三快的马。第二位置的可用马匹是 B1 和 A2,第三位置的可用马匹是 A3、B2 和 C1。所有其他马不能进入前 3。让这些马之间进行一场比赛,前 2 将分别是第二和第三快的马。
    所以总共需要8场比赛。

  • 哪种数据结构最适合找到运行数字流的中位数(在线算法)


    这个想法是使用最大堆和最小堆分别存储左半部分低于当前中位数和右半部分大于当前中位数的元素。对于每个输入,堆中元素的数量最大相差 1 个元素。当两个堆包含相同数量的元素时,我们选择平均值作为中位数,否则我们从包含更多元素的堆中选择中位数。
    有关更多详细信息,请参阅此处。

  • 一个聚会有 N 个人,他们可能知道也可能不知道对方的名字。
    群里有一个名人,名人不认识任何人,所有人都认识这个名人。我们只能问“A认识B吗?”这样的问题。 (名人问题)
    找到名人的最佳解决方案的最坏情况时间复杂度是多少?

    在)
    假设我们问“A 知道 B 吗?”。如果A认识B,A就不可能是名人。如果A不认识B,那么B就不可能是名人。所以在每一个问题之后,我们可以拒绝一个人。因此,我们最多需要问 n 个问题才能正确找出名人。
    有关更多详细信息,请参阅此处。

  • 给定两个字符串A 和 B,返回一个字符串,其中 A 和 B 的字符交替填充,顺序与以 A字符开头的原始字符串相同,例如 A = “Hello”, B = “Bye” 然后输出应该是“哈贝罗”。 (|A|,|B|<25000)

    创建一个新的空字符串。运行一个循环分钟(| A |,| B |)的时间和第i个追加A的字符,然后第i个到应答的字符串。最后,附加字符串A至答案字符串的剩余部分或B B的字符。

  • 给定一个数 N,找出将 N 写成两个或多个连续正整数之和的方法数,例如,如果 N 是 7,则只有 1 种方法,即 3+4。 (0

假设我们从 1 开始我们的求和序列,即 1+2+3+…..
最大数总和小于或等于 N 的数字: floor(X)
其中X*(X+1)/2=N
因此,作为连续正整数之和的 N 最多将包含 X 个数字。
在这里,我们可以检查 2 和 X(包括两者)之间的每个可能性 k(assume) 并检查我们可以使用 AP 的概念,因为求和序列是一个总和为 N 的 AP。
我们知道没有。 AP中的术语,n:k
AP、S 之和:N
公差,d:1
我们可以使用公式轻松计算第一项 a:

S=n/2*(2a + (n-1)d)

如果 a 是整数,则 N 可以表示为 k 个连续整数的和,否则,不可能。计算 a 为整数时出现的次数,这就是我们的答案。
时间复杂度:循环运行 X 时间,即 O(sqrt(N)) 并且在每次迭代中,我们花费 O(1) 时间。所以整体时间复杂度是O(sqrt(N))

PS:笔试还包含MLQuant相关的问题。