当前位置: 首页 > 面试题库 >

高耸算法

谯皓君
2023-03-14
问题内容

在《破解编码面试》第四版中,存在这样的问题:

马戏团正在设计一个塔楼套路,由站在一个人的肩膀上的人组成。出于实际和美学的原因,每个人都必须比其下方的人矮一些和矮一些。考虑到马戏团中每个人的身高和体重,编写一种方法来计算此类塔楼中的最大人数。

示例:输入(ht,wt):(65,100)(70,150)(56,90)(75,190)(60,95)(68,110)

输出:最长的塔长为6,从上到下包括:(56,90)(60,95)(65,100)(68,110)(70,150)(75,190)

这是 书中的解决方案

步骤1首先按高度然后按重量对所有项目进行排序这意味着,如果所有高度都是唯一的,则将按其高度对项目进行排序。如果高度相同,则将按其重量对项目进行排序

步骤2找到包含增加的身高和增加的体重的最长序列。为此,我们:

a)从序列的开头开始当前,max_sequence为空

b)如果下一项的高度和重量不大于上一项的重量和重量,我们将此项目标记为“不适合”

c)如果找到的序列的项目多于“最大序列”,则变为“最大序列”

d)之后,从“不合适的项目”开始重复搜索,直到我们到达原始序列的末尾

我对它的解决方案有一些疑问。

Q1

我认为此解决方案是错误的。

例如

(3,2) (5,9) (6,7) (7,8)

显然,这(6,7)是一项不合适的项目,但是(7,8)呢?根据解决方案,它不是不适合的,因为它的h和w大于(6,7),但是,由于(7,8)不适合,因此不能将其考虑到序列中(5,9)

我对吗?

如果我是对的,那么解决方法是什么?

Q2

我相信,即使有上述解决方案的解决方案,该解决方案的样式也至少会导致O(n^2),因为根据步骤2-d,它需要一次又一次地迭代。

那么有可能有一个O(nlogn)解决方案吗?


问题答案:

您可以使用动态编程解决问题。

按高度对剧团进行排序。为简单起见,假定所有高度h_i和权重w_j是不同的。因此,h_i是一个递增的序列。

我们计算一个序列T_i,其中T_i是一个塔,其中人i在最大大小的顶部。T_1就是{1}。我们可以从较早的T_j推导出后续的T_k
-找到最大的塔T_j,它可以承受k的重量(w_j <w_k)并在其上站k。

剧团中可能最大的塔就是T_i中最大的塔。

该算法花费O(n ** 2)时间,其中n是剧团的基数。



 类似资料:
  • 在《破解编码面试》第四版中,有这样一个问题: 一个马戏团正在设计一个由站在一个人肩膀上的人组成的塔例程,为了实用和美观的原因,每个人都必须比他或她下面的人更矮更轻给定马戏团中每个人的身高和体重,写出一个计算这样一个塔中可能的最大人数的方法。 示例:输入(ht,wt):(65,100)(70,150)(56,90)(75,190)(60,95)(68,110) 输出:最长的塔长度为6,从上到下包括:

  • 作为基本运算符的补充,Swift 提供了一些对值进行更加复杂操作的高级运算符。这些运算包括你在 C 或 Objective-C 所熟悉的所有按位和移位运算符。 与 C 的算术运算符不同,Swift 中算术运算符默认不会溢出。溢出行为都会作为错误被捕获。要允许溢出行为,可以使用 Swift 中另一套默认支持的溢出运算符,比如溢出加法运算符( &+ )。所有这些溢出运算符都是以( & )符号开始的。

  • 问题内容: 什么是高/低算法? 我已经在NHibernate文档中找到了这一点(这是生成唯一密钥的一种方法,第5.1.4.2节),但是我没有找到有关其工作原理的很好的解释。 我知道Nhibernate可以处理它,并且我不需要了解内部,但是我很好奇。 问题答案: 基本思想是,您有两个数字组成主键-“高”数字和“低”数字。客户端可以从本质上增加“高”序列,知道它随后可以安全地从先前的“高”值的整个范围

  • 本文向大家介绍Python高级复数算法,包括了Python高级复数算法的使用技巧和注意事项,需要的朋友参考一下 示例 该模块cmath包括使用复数的附加功能。 此模块可以计算弧度的复数相位: 它允许在复数的笛卡尔(矩形)和极坐标表示之间进行转换: 该模块包含的复杂版本 指数函数和对数函数(通常log是自然对数和log10十进制对数): 平方根: 三角函数及其反函数: 双曲函数及其反函数:

  • 15单选+3简答+2编程 一小时 单选有概率密度、算特征图维度这类需要计算的 简答 给中序后序画树的结构         介绍relu sigmoid leakyrelu tanh优缺点         介绍transformer 介绍自注意力机制 写注意力公式 写encoder-decoder结构并介绍decoder的注意力 介绍多头注意力 介绍长度和注意力的关系 编程    给一个数字字符串和

  • 🕒 岗位/面试时间 高德打车机器学习算法 🤔 面试感受 太棒了吧,如沐春风,面试官人特好,特温和,还有正反馈 👥 面试题目 主要还是围绕项目,深挖项目,以及项目未来想做什么 其余就是基本深度学习知识,优化器,损失函数,标准化,模型结构,transformer,梯度反向传播,评价指标 手撕是很简单的dp