编程面试题

  • 替换嵌套的if语句

    好吧,由于您专门询问了switch case语句,因此不是直接回答您的问题,而是一个类似的问题。 反转“ if”语句以减少嵌套 这是关于用早期返回的保护语句替换嵌套的if,而不是在确定返回值之前逐步检查越来越多的事物。

  • 计算scipy csr矩阵中的欧式距离

    因此,让我们创建矩阵(很遗憾,您没有提供我可以复制粘贴的输入) In [114]: data=[4,1,2,2,1,1,4,3,2] In [115]: col=[0,1,1,2,2,3,4,4,4] In [116]: row=[2,0,4,0,3,5,0,2,3] In [117]: M=sparse.csr_matrixdata,col,row In [118]: M Out[118]:

  • 从数字的差异中获得最低的总和

    marcog的解决方案是解决该问题的正确,非递归的多项式时间解决方案-这是一个非常标准的DP问题- 但是,为了完整起见,这里提供了一个可行的证明以及该问题的实际代码。[@marcog:如果愿意,可以将此答案的任何部分复制到您自己的文件中;然后,我将其删除。] 证明 让列表为x 1,…,X ñ。假设wlog该列表已排序。我们正在尝试从列表中找到K个(不相交的)元素对,以使它们之差的总和最小化。

  • SQLAlchemy:自动为旧数据库生成类定义

    您可以完全使用python软件包sqlacodegen来实现此目的。 sqlacodegen将检查数据库并生成SQLAlchemy样式类定义以供将来参考,并将它们存储在文件中。 https:pypi

  • 查找非重叠序列的最大覆盖范围的算法。(即加权间隔调度概率。)

    这是 O(nlog n)时间,O(n)空间 算法。首先,如果元组数组尚未按此顺序排列,则按其起始位置对其进行排序。我假设从零开始的数组索引。 让我们调用元组ib(i)的开始位置和结束位置e(i),以使其总长度为e(i)-b(i)+1。还要定义一个函数next(i),该函数返回第一个元组的元组列表中的位置,可以显示在元组i的右侧。注意,可以使用二进制搜索在O(log n)的时间内计算nex

  • 为Vim上的Python获得正确的代码完成?

    您可以尝试Pydiction(以下摘录) 说明 Pydiction允许您在Vim中制表符完整的Python代码,包括:标准,自定义和第三方模块和包。加上关键字,内置函数和字符串文字。 br

  • 程序集处理三角矩阵存储器的算法

    TL:DR:您只需要按顺序遍历数组,因此不必计算索引。请参阅第二部分。 为了将索引 随机访问 到一个(较低的)三角形矩阵中 ,行r从一个size三角形开始r-1。大小的三角形n具有n*n+12code

  • 展开熊猫数据框列

    您可以pd.Series.str.get_dummies结合使用该text系列: dummies = df['labels'].str.replace'

  • 如何使用最少的位生成任意范围内的无偏随机数

    消除偏差的常用方法是丢弃超出所需范围的数字。如上所述,这是浪费的。通过从大量的位开始并同时生成多个随机数,可以最大程度地减少浪费。您可以在输入到输出的范围之间实现更好的匹配。 例如,拿一卷骰子。输出有6种可能性。天真的方法将为每个产生的随机数占用3个随机位。第一个例子说明了鸽洞问题。 def pigeon_dietotal_bit_count: for i in xrangetot

  • 根据窗口的高度和宽度缩放文本

    如果文本太大,可以使用缩放转换来缩小文本,这样可以避免种族冲突: ScaleLabel@Label: _scale: 1. if self.texture_size[0] self.width else floatself.width self.texture_size[0] canvas.before: PushMatrix Sc

  • 两组高维点:在另一组中找到最近的邻居

    法兰 如果您的数据确实位于高维空间中,则可以使用FLANN。 实际上,它会构建许多旋转的kd树并每棵树(一点点)进行查询,从而保持最佳结果。它还会轮换数据集,以免出现讨厌的情况。 在出版物部分,您可以阅读有关其工作原理的更多信息。 在获取法兰

  • 获取所有可能的唯一排列

    对于小数组,可以使用引用的算法之一,将每个排列映射到字符串,然后将整个数组放入Set中以丢弃重复项。就像是: let a = ['^','^','','','+','','']; le

  • 打开文件以使用truncate进行读写

    如果要存储数据,请截断使用r+: with openPATH,"r+" as f: line = f.read f.seek0 f.truncate

  • 了解Ukkonen的后缀树算法

    查找古斯菲尔德的字符串算法教科书的副本。这是我见过的后缀树构造的最佳说明。线性是高级算法的许多优化的令人惊讶的结果。

  • Python CSV-需要基于一个键对值进行分组和计算

    我已经记录了一些步骤以帮助澄清问题: import csv from collections import defaultdict # a dictionary whose value defaults to a list. data = defaultdictlist # open the csv file and iterate over its rows. the enumerate # func

  • 闲逛的Timsort

    引用最近删除的博客文章的相关部分:可视化排

  • Python:是否在列表理解中对split函数进行了多次评估?

    对于每个元素,列表推导中左侧的表达式将重新评估,是的。 如果只需要对它进行一次评估,则需要完全按照自己的意愿进行;首先调用它,并将结果存储在列表推导中。 从 列表显示 文档: 在这种

  • 3D中的射线与正方形/矩形相交

    在R3中为一条线创建一个矢量方程,然后求解该线在要对其进行测试的矩形平面中的交点。之后,测试该解决方案的点是否在界限之内就足够简单了。 解的参数t可以通过以下方式找到: t = a * x0 - rx + b * y0 - ry + c * x0 - rz a * vx + b * vy + c * vz 哪里: pre

  • STL容器中的有序排序

    std::sort具有第三个参数,可用于传递充当自定义比较器的布尔谓词。 根据您的规格编写自己的比较器并使用。 例如: struct foo { std::string id; f

  • 两个普通六面体之间的碰撞检测

    看来我太傻了,不能辞职。 考虑一下。如果实体1的任意边与实体2的任意面相交,则发生碰撞。这还不是很全面,因为在某些情况下其中一个完全包含在另一个中,您可以通过确定其中一个的中心是否包含在另一个中来进行测试。 检查边缘面相交的工作原理是这样的。 将边定义为从一个顶点延伸到另一个顶点的向量。注意L边的长度。 通过顶点

  • 通过终端和通过PHP调用python脚本之间的区别?错误在哪里?

    在您的PHP代码中,您只是调用“ python”,然后让PHP决定使用哪个版本的Python。使用到特定Python二进制文件的显式路径(例如usrbinpython2.6)。 您需要知道安装MySQLdb的Python版本的确切路径。

  • 用于字符串数组的delphi mergesort

    回答第二个问题:带有重复删除的Mergesort修改。应该适用于字符串。 returns new valid length function MergeSortRemoveDuplicatesvar Vals: array of Integer:Integer; var AVals: array of Integer; returns index of the last valid ele

  • python硒的useAutomationExtension等价于什么?

    该驱动程序在Chrome中安装了扩展程序,以实现一些功能,例如截屏。 可以通过以下useAutomationExtension选项禁用它: from selenium import webdriver capabilities = { 'browserName': 'chrome', 'chromeOptions': { 'useAutomation

  • 磁带均衡的Codility培训

    您的解决方案已经是O(N)。您需要从sumleft和sumright中删除abs。 if Math.abs sumleft - sumright ans { ans = Math.abs sumleft - sumright ; } 同样在第二个for循环之前 ans =Math.abs sumleft - su

  • Python相当于Ruby的define_method吗?

    函数是Python中的一流对象,可以分配给类或实例的属性。与Wikipedia示例相同的方法之一是: colours = {"black": "000", "red": "f00", "green": "0f0", "yellow": "ff0", "blue": "00f", "magenta": "f

  • 给定n个硬币(其中一些较重),找到重硬币的数量吗?

    我不会给出完整的答案,但是我会帮助您细分的。 找到一种Ologn算法来查找单个沉重的硬币。 找到一种Ologn算法,将一个集合分为两个集合,分别具有相同数量的重计数和轻计数,以及最多两个剩余数(用于每个数均不存在的情况)。 结合算法1和2。 提示:

  • Plone:对删除对象做出反应

    一位同事提出了一个可行的解决方案: import transaction def redirect_to_trialtrans, obj=None, parent=None: if obj.id not in parent: request = getattrobj, 'REQUEST', None if request: trial_ur

  • JAVA中的字母数字增量算法

    这里有3个解决方案:前两个是算术增量,而第三个更多是字符操作。 这三个实现都通过相同的单元测试: assertEquals"1DDA01A", MyClass.increment"1DDA00Z"; assertEquals"1A9AV00", MyClass.increment"1A9AU99"; assertEquals"AFH00", MyClass.increme

  • 如何在Pygame中为通道分配声音?

    每个通道一次只能播放一个声音,但是一次可以播放多个通道。如果您不命名频道,pygame会选择一个未使用的频道来播放声音。默认情况下,pygame有8个频道。您可以通过创建Channel对象来指定通道。至于无限循环声音,您可以通过使用参数loops -1播放声音来实现。您可以在a href="http:www.

  • 如何找到数组中的求逆数?

    它实际上是分治法的应用程序,如果您熟悉它,则可以快速提出解决方案。 以[1 3 8 5 7 2 4 6]为例,假设我们将数组排序为[1 3 5 8]和[2 4 6 7],现在我们需要组合两个数组并获得总数倒置。 由于每个子数组中已经存在反转次数,因此我们只需要找出由数组合并引起的反转次数。每次插入一个元素,例如,将2个元素插入[1#3 5 8]中,您就可以知道第一个数组与元素2之间有多少个反转(在此示例

  • HashSet如何提供恒定时间的添加操作?

    存储桶的数量是动态的,大约为〜2n,其中n是集合中元素的数量。 请注意,HashSet给出的平均和摊销时间性能为O1,而不是最差的情况。这意味着,我们可能会On不时地遭受

  • 如何解析包含“ st”,“ nd”,“ rd”或“ th”的日期日期?

    您可以使用regex来代替st,nd,rd,th 用一个空字符串: import re def solves: return re.subr'\dst|nd|rd|th',

  • 乘以逆是更好还是更坏?

    乘以倒数更快。编译器不会自动对此进行优化,因为这可能会导致精度损失很小。(这实际上是D新闻组WalterBright的常客出现的,他明确表示编译器不会自动执行此操作。)您通常应该划分内容,因为它更具可读性和准确性。 如果您在一个循环中执行十亿次浮点代码, 而 又不关心精度的微小损失, 而 将相同的数除以数次,那么乘以逆数可能是一个很好的优化。实际上,在某

  • 如何动态设置Scrapy规则?

    因此,这是我在@Not_a_Golfer和@nramirezuy的大力帮助下解决问题的方法,我只是在使用它们的两个建议: class NoFollowSpiderCrawlSpider: def __init__self, crawl_pages=False, moreparams=None, *args, **kwargs: superNoFollowSpider, self.__init

  • 打印出数组的所有排列

    创建(或打印)数组的排列比单纯地迭代和循环地结合起来要容易得多。确实有迭代的方法可以做到这一点,但是结合使用起来特别简单。具体来说,请注意,根据定义,这里有N!长度为N的数组的排列- 第一个插槽为N个选择,第二个插槽为N-1个选择,依此类推。因此, 对于数组中的每个索引i ,我们可以将算法分解为两步。 在子数组中选择一个元素作为数组arr[i....end]co

  • 从pandas数据框列中查找所有正则表达式匹配项

    您可以使用Series.str.extractall()方法: In [57]: x Out[57]: v

  • 使用autbahn.asyncio.wamp非阻塞地运行几个ApplicationSession

    按照您链接扭曲的方法a href="https:stackoverflow.comquestions28414302how-create-a- pytho

  • 如何使用动态编程找到子序列的最大和?

    您应该在学校的http:castle.eiu.edu上查看此pdf文件,这里是:a href="http:castle.eiu.

  • 32位pyodbc读取64位访问权限(accdb)

    包括Python在内的32位应用程序只能与32位ODBC驱动程序一起使用。 包括Python在内的64位应用程序只能与64位ODBC驱动程序一起使用。 如果你有: 带pyodbc模块的32位Python 64位MS Access ODBC驱动程序 然后,您必须更改一些内容: o

  • 根据用户定义的权重选择随机元素

    我在几个PHP游戏引擎中使用了此功能: ?php ** * @param array $values - just the weights * @return integer A number between 0 and count$values - 1 * function getBucketFromWeights$values { $total = $currentTotal