首页
学习
活动
专区
圈层
工具
发布

一道Google面试题:如何分解棘手问题(下)

但是现在我们必须检查我们的ID是否在节点列表中:ousidslist。 如果它不在任何相邻的ID列表中,我们将添加它及其相邻的ID。这样,在循环的时候,其他东西会链接到它。...我忘了解释在我的性能评估中循环列表的原因,这显然对性能有影响。 随机迭代 我想在递归方法之后采用方法论,并迭代地应用它。...我花了一个晚上的大部分时间试图记住如何动态地更改循环中的索引,然后记得while(true)。自从我写了传统的循环以来,我已经完全忘记它了。 既然我有了武器,我就准备进攻。...我从来都不建议你这样做,但是创建这些示例时我已经到了山穷水尽的地步,我想尝试一些不同的方法。 分解 我把它分成3个部分,用if块隔开。 让我们从中间部分开始。我们正在检查队列。...我想用常规的方式编写代码,然后使用RxJS流式传输数据,以了解我可以将其推进到什么程度。 我在RxJS中创建了3个版本,并利用一些自由来加快执行时间。

1.2K30

第四章4:使用列表

我们创建了一个包含两个元素的列表,然后将数值5添加到列表的后面。 .insert() 增加一个元素到列表中的第二个方法是使用insert函数。这一方法需要一个索引值才能将增加的值插入到指定位置。...使用pop方法,我们可以看到它首先移除了列表中最后一个元素True,那么,接着移除了索引位置0上的元素5。当整数5移除列表时,我们同时将其保存到一个新变量中,然后将其与新列表一起输出。...现在我将介绍如何在一个列表中运行条件语句。将列表和条件语句相结合的原因有很多。以下几个例子只是其中的几种原因。...在第一个语句中,我们试图查看列表中是否存在“Mary”,结果确实存在。第二个条件语句检查“ Jimmy”是否不存于列表中,这也是正确的,因此它也可以运行。...变量names输出结果将是没有字符“ Bob”的列表。我们将while循环与条件语句结合使用,当检查到列表中的“ Bob”值后,然后删除它,直到条件不再成立为止。

6.4K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python 自动化指南(繁琐工作自动化)第二版:四、列表

    使用列表的好处是你的数据现在是在一个结构中,所以你的程序在处理数据时比使用几个重复变量要灵活得多。 将for循环用于列表 在第 2 章中,你学习了如何使用for循环来执行一段代码一定的次数。...spam变量时,您实际上是在计算机内存中创建了42值,并在spam变量中存储了一个对它的引用。...当您稍后将spam中的值更改为100时,您正在创建一个新的100值,并将对它的引用存储在spam中。这不影响cheese中的值。...然后在图 4-5 中,将spam中的引用复制到cheese。只有一个新的引用被创建并存储在cheese中,而不是一个新的列表。注意这两个引用是如何引用同一个列表的。...提示:你需要在一个循环中使用一个循环来打印grid[0][0],然后grid[1][0],然后grid[2][0],依此类推,直到grid[8][0]。这将完成第一行,然后打印一个换行符。

    2.3K20

    第四章5:创建猜单词游戏(Hangman)

    通过将列表乘以单词的长度,可以将列表内的元素复制,得到与单词长度一致的列表。 创建游戏循环 无论程序的大小,每个游戏都有一个主循环。我们的主循环将执行我们在“最终设计”部分中定义的逻辑。...现在,当猜测正确的字母时,它将输出更改。for循环正在循环到单词的长度,并且我们使用变量“ i”来进行跟踪索引。然后,我们检查每个字符是否等于猜出的字母。如果是,则将项目从下划线更改为该索引下的字母。...然后,我们打印出一个祝贺语句,并将我们的game_over变量更改为True来结束循环。...在我们输出信息的顶部,打印出猜字母的完整列表。最好将其保留在列表中。即使您猜到了,它仍然会显示一个空列表,因为我们还没有为它添加功能呢。...在第35行,我们添加了第二个elif语句,该语句将检查字母是否特别在变量guessed列表中清单。请记住,一旦运行一个if/elif语句,那么它下面的语句将不会运行。

    2.9K20

    赌5毛钱,你解不出这道Google面试题

    在我向一位同事展示我想出的不同解决方案时,他如此说道。 1. 算法 我们将从一个节点开始,尽可能向下搜索,直到到达一个端点。然后我们将返回并采取下一个分支路径,直到我们扫描完整个连续块为止。...在此过程中,我们还必须记录我们搜索过的部分,以及最大的连续块的长度。 我将函数分成了两部分。其中一个函数将保存最大列表和先前扫描的 ID,同时至少循环每个节点一次。...但该算法的一个缺陷是,它执行得相当慢。在上述代码的性能评估中,我没有考虑到循环列表的列表的情况,这显然对性能有很大的影响。 5. 随机迭代 我想采用递归方法背后的思路,并以迭代方式进行应用。...接下来,我想以常规的方式来编写代码,然后使用 RxJS 流式传输数据,看看能将算法性能提升多少。 我使用 RxJS 做了 3 个版本的算法,并做了一些修改来加快执行速度。...还有一次是在我绘制一张世界地图的时候,该地区有一个预定义的节点列表,我对其进行了实时处理。这使得使用者可以通过键盘上的方向键来移动世界地图。

    1.2K10

    Unity基础教程系列(新)(三)——数学表面(Sculpting with Numbers)

    我们将对Z使用相同的范围,就像我们对X使用的范围一样,所以我们将创建与当前拥有的点一样多的线。这意味着我们需要对点的数量进行平方。在Awake中调整点数组的创建,使它足够大,以包含所有的点。 ?...当x等于分辨率时,一行就结束了,因此我们可以在循环的顶部使用if块来解决这一问题。然后使用x代替i来计算X坐标。 ? 现在,我们创建一个点的正方形网格,而不是一条直线。...然后,我将Directional Light的Y旋转从−30更改为30,以改善该视角的照明。 除此之外,我们可以稍微调整阴影质量。...让它最初声明一个Vector3变量,然后设置其组件,然后返回它。我们不必给向量一个初始值,因为我们在返回它之前设置了它的所有字段。 ? 然后对MultiWave和Ripple进行相同的处理。 ?...4.2 创建球 为了说明我们确实不再局限于每个(X,Z)坐标对一个点,让我们创建一个定义球体的函数。为此,将一个Sphere方法添加到FunctionLibrary中。

    1.9K40

    第四章1:列表

    我正在以推文形式连载出来,欢迎学习。 第四章 列表和循环 这一周,我将介绍一种称为“列表”的新数据类型和一种称为“循环”的新概念。...第一个输出是变量data中的所有元素,包括整数、字符串、列表和布尔数据类型。第二个输出存储在变量data中的列表,它位于列表data索引位置2上的子列表,这一子列表中包括整数和字符串数据类型。...获取列表中的子列表 在最后这一代码块中,我们看到如何输出存储在变量data中的列表。现在,我们来学习如何获取子列表中的对象。通常来说,为了获取列表中的对象,我们仅用方括号和索引的位置即可。...第二个输出结果是“hello”。因为我们创建了一个变量来存储变量data中索引位置2(即变量data中第2个对象)上的对象。而这一索引位置上正是变量data中的子列表。...第一个输出的值是两个列表a和b中的所有的值,这些值都是一样的。第二个输出的值是列表中第一个对象在内存中的位置。而最后,在我们改变列表A中的第一个对象的值后,列表B中对应第一个对象同样被改变。

    91110

    笨办法学 Python3 第五版(预览)(三)

    在学习更多之前,我将通过回答你在学习练习中提出的问题来解释一切。你做了学习练习,对吧? 你认为if对其下面的代码有什么影响?if 语句在代码中创建了所谓的“分支”。...在一行的末尾加上冒号是告诉 Python 你将创建一个新的代码“块”,然后缩进四个空格告诉 Python 哪些代码行在该块中。这与你在本书的前半部分创建函数时所做的事情完全相同。...在上一个脚本中,你列出了一组简单的测试,询问一些问题。在这个脚本中,你将询问用户问题,并根据他们的答案做出决定。编写这个脚本,然后多玩一下,弄清楚它的运行方式。...让我们用一个简单的问题“创建一个简单的华氏度到摄氏度转换器”来做一个例子。第一步,我会写出我对转换的了解: C 等于 (F - 32 ) / 1.8。我应该询问用户输入 F,然后打印出 C。...保持在写一些代码、运行测试并修复直到它有效的循环中工作。 将这个任务从你的清单上划掉,然后选择下一个最容易的任务并重复。 这个过程将帮助你以一种系统和一致的方式来开发软件。

    1.1K10

    使用Prodfiler优化eBPF编译器性能:从内存分配到向量化的全面调优

    按照此处的文档在几次点击中创建新项目并部署Prodfiler。一旦它启动并运行,我们就可以通过运行上述基准测试来收集基线数据。我创建的用于执行此操作的脚本可以在此处找到。...好的,这是一个好的开始,但让我们暂时搁置它,继续向下查看列表,看看是否有更容易的收益可以找到。第二个突出的项目是在位置5和6我们可以看到malloc和free函数。...实际上,在将上述列表扩展到前20个函数后,我发现malloc相关函数占据了前20个位置中的5个。如果我们对它们的CPU使用求和,我们了解到应用程序整整10%的CPU时间花费在内存管理上!...这两个相同的函数也负责所有对std::vector::operator[]的调用,这是Top N Functions列表中的第二个函数。...在调查后,我发现了另一个导致编译器生成逐字节循环以清零向量的vector实例。我也用vector替换了它,允许编译器使用memset而不是循环。

    23610

    赌 5 毛钱,你解不出这道 Google 面试题

    在我向一位同事展示我想出的不同解决方案时,他如此说道。 算法 我们将从一个节点开始,尽可能向下搜索,直到到达一个端点。然后我们将返回并采取下一个分支路径,直到我们扫描完整个连续块为止。...在此过程中,我们还必须记录我们搜索过的部分,以及最大的连续块的长度。 我将函数分成了两部分。其中一个函数将保存最大列表和先前扫描的 ID,同时至少循环每个节点一次。...循环 该函数的后半部分也会遍历每个节点一次。递归函数使用 reducer来检查代码是否已被扫描。若已被扫描,就继续循环,直到找到一个没有循环的节点,或者直到退出循环为止。...但该算法的一个缺陷是,它执行得相当慢。在上述代码的性能评估中,我没有考虑到循环列表的列表的情况,这显然对性能有很大的影响。 随机迭代 我想采用递归方法背后的思路,并以迭代方式进行应用。...接下来,我想以常规的方式来编写代码,然后使用 RxJS 流式传输数据,看看能将算法性能提升多少。 我使用 RxJS 做了 3 个版本的算法,并做了一些修改来加快执行速度。

    1.2K10

    谷歌100多次面试都会提的一个问题,你会解吗?

    在我向一位同事展示我想出的不同解决方案时,他如此说道。 算法 我们将从一个节点开始,尽可能向下搜索,直到到达一个端点。然后我们将返回并采取下一个分支路径,直到我们扫描完整个连续块为止。...在此过程中,我们还必须记录我们搜索过的部分,以及最大的连续块的长度。 我将函数分成了两部分。其中一个函数将保存最大列表和先前扫描的 ID,同时至少循环每个节点一次。...循环 该函数的后半部分也会遍历每个节点一次。递归函数使用 reducer来检查代码是否已被扫描。若已被扫描,就继续循环,直到找到一个没有循环的节点,或者直到退出循环为止。...但该算法的一个缺陷是,它执行得相当慢。在上述代码的性能评估中,我没有考虑到循环列表的列表的情况,这显然对性能有很大的影响。 随机迭代 我想采用递归方法背后的思路,并以迭代方式进行应用。...接下来,我想以常规的方式来编写代码,然后使用 RxJS 流式传输数据,看看能将算法性能提升多少。 我使用 RxJS 做了 3 个版本的算法,并做了一些修改来加快执行速度。

    1.3K20

    “ 详细过程 各种注意批注 为您的python基础学习保驾护航!

    可以用len进行操作 整型就不可以 动态类型特征 指的是在程序运行的过程中,你改变一个变量的值也可以直接改变它的类型 a = 0 print(type(a)) a = '0' print...1,我这个hello的都要给你hello一下') 上述代码中 第一个代码执行的两个print是一个代码块 第二个代码的两个print不是一个代码块 此外,还有嵌套代码 scanf1 = input...scanf1是1') print('我在嵌套之外') 这里的二级条件就是scanf2的情况,第二个print和第二个if是同缩进,他俩是一个代码块 不能平白无故的缩进 空语句pass pass表示空语句...列表是一种在代码中批量表示和保存数据的方法,元组相似于列表,但是列表中存放的元素可以修改调整,元组中存放的元素是创建元组的时候就设定更好的,不能修改调整....也就是用一个变量来表示多个数据,类似于其他编程语言中的"数组" 创建列表 创建列表主要有两种方式,例如[ ]表示创建一个空的列表 alist = [ ] alist = list()

    66410

    使用Prodfiler优化eBPF编译器性能:零代码修改实现近2倍提升

    按照这里的文档创建新项目并在几次点击中部署Prodfiler。一旦启动并运行,我们就可以通过运行上述基准测试来收集基线数据。我创建的用于执行此操作的脚本可以在这里找到。...好的,这是一个好的开始,但让我们暂时搁置它,继续查看列表,看看是否有更容易的收益可以找到。第二个突出的项目是在位置5和6我们可以看到malloc和free函数。...这两个相同的函数也负责所有对std::vector::operator[]的调用,这是Top N Functions列表中的第二个函数。...我从这些数据中的最终观察是,Top 10函数中有4个在Z3中,这是我们将深入研究的那个,因为它暗示任何对Z3的优化都可能产生显著影响。Prodfiler提供了两种方法来深入了解这些函数的使用方式。...在调查后,我发现了另一个vector实例导致编译器产生逐字节循环来清零向量。我也用vector替换了它,允许编译器使用memset而不是循环。

    24100

    挑战30天学完Python:Day13 列表推导式和Lambda

    总之如果你想提升自己的Python技能,欢迎加入《挑战30天学完Python》 Day 13 列表推导式 在Python中,列表推导式(又称列表解析式)提供了一种简明扼要的方法来创建列表。...一种从序列创建列表的紧凑方式。列表推导式比使用 for 循环处理列表要快得多。...# 语法形式 [i for i in iterable if expression] 它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是 0 个或多个 for 或者 if 语句。...当我们想在另一个函数里面写一个匿名函数时,我们就需要它。 创建Lambda函数 要创建lambda函数,我们使用 lambda 关键字后跟一个形参和表达式。请参阅下面的语法和示例。...具体举一个例子: def power(x): return lambda n : x ** n cube = power(2)(3) # 函数power在括号需求两个参数来运行 print

    56420

    如何在Ubuntu 14.04上使用Ansible部署多个PHP应用程序

    第一个教程涵盖了部署应用程序的基本步骤; 在第二个教程介绍更高级的主题,如数据库,队列守护进程和任务调度(crons)。...但是,如果您在浏览器中访问http://laravel.example.com/,它应该显示我们的原始应用程序。 第3步 - 在任务中循环变量 在本节中,我们将学习如何遍历任务中的变量列表。...如前所述,变量列表需要在我们希望使用它们的每个任务中循环。正如我们在install packages任务中看到的那样,我们需要定义一个项循环,然后为列表中的每个项应用任务。...完成运行后,在浏览器中刷新站点,它应该显示与上一个教程末尾相同的内容: Queue: YES Cron: YES 第5步 - 一起循环多个变量 在这一步中,我们将在任务中循环多个变量。...然后,我们在以下任务中使用when: cloned|changed来条件地触发任务。现在我们需要更新这些引用以支持应用程序循环。

    10.5K00

    10 个 惊艳的 Pythonic 单行代码

    自从我用 Python 编写第一行代码以来,我就被它的简单性、出色的可读性和流行的单行代码所吸引。...在下文中,我想介绍和解释其中的一些单行代码——也许有一些你还不知道并且对你的下一个 Python 项目很有用。...在这里你可以使用它来将列表元素分配给给定的变量,这也称为_拆包_。将*再次打包剩余的值,这会产生一个子列表c。它甚至适用于每个其他位置*(例如列表的开头或中间部分)。 3....'] 输出: 可以使用内联 for 循环从其他列表动态创建列表。...通常你需要一些循环和条件来检查给定的字符串是否是回文。在 Python 中,你只需将字符串与其反向字符串进行比较。除了使用切片运算符[::-1],你还可以使用reverse()函数来反转字符串。

    89220

    10 个 惊艳的 Pythonic 单行代码

    自从我用 Python 编写第一行代码以来,我就被它的简单性、出色的可读性和流行的单行代码所吸引。...在下文中,我想介绍和解释其中的一些单行代码——也许有一些你还不知道并且对你的下一个 Python 项目很有用。...在这里你可以使用它来将列表元素分配给给定的变量,这也称为拆包。将*再次打包剩余的值,这会产生一个子列表c。它甚至适用于每个其他位置*(例如列表的开头或中间部分)。 3....'] 可以使用内联 for 循环从其他列表动态创建列表。...通常你需要一些循环和条件来检查给定的字符串是否是回文。在 Python 中,你只需将字符串与其反向字符串进行比较。除了使用切片运算符[::-1],你还可以使用reverse()函数来反转字符串。

    38510

    Unity基础教程系列(新)(六)——Jobs(Animating a Fractal)

    可以通过在每次迭代中增加子索引并将其在适当的时候重置为零来做到这一点。或者,我们可以在另一个嵌套循环中显式创建五个子代。这就要求我们在每次迭代中将分形部分索引增加5,而不仅仅是增加它。 ? ?...我们可以通过将新部件存储在变量中,设置其字段然后返回它来实现。另一种执行此操作的方法是使用对象或结构初始化程序。这是大括号内的列表,在构造函数调用的参数列表之后。 ?...在循环之前检索它,并将其旋转乘以增量旋转。 ? FractalPart是一个结构,它是一个值类型,因此更改其局部变量不会更改任何其他内容。...约定是在所有接口类型前面加上一个I来表示接口,因此该接口名为JobFor并带有一个I前缀。这是一个Job接口,特别是用于在循环内部运行的功能的接口。...更改Update,以便我们创建一个新的UpdateFractalLevelJob值,并在级别循环中设置其所有字段。然后更改最里面的循环,以便它调用作业的Execute方法。

    4.9K31

    Awk,一行程序和脚本,帮助您对文本文件进行排序【Programming】

    为了简单起见,假设您希望根据每行的第一个字段对列表进行排序。 在进行排序之前,必须能够将 awk 集中在每行的第一个字段上,因此这是第一步。...脚本 Awk 不仅仅是一个命令; 它是一种编程语言,具有索引、数组和函数。 这一点很重要,因为它意味着您可以获取一个要进行排序的字段列表,将该列表存储在内存中,对其进行处理,然后输出结果数据。...前面没有特殊关键字BEGIN或END的Awk语句是发生在每个记录上的循环。这是脚本的一部分,它扫描数据中的模式并相应地处理它。...为了向数组添加键和值,创建一个包含数组的变量(在这个示例脚本中,我称之为 ARRAY,它并不是非常原始,但非常利于理解),然后在方括号中将其分配给键和一个等号。...最后,使用for循环迭代SARRAY中的每个项,使用printf()函数打印每个键,然后在ARRAY中打印该键的相应值。

    2.1K00

    Unity基础教程系列(十)——卫星(Shape Relationships)

    (大形状都有他们自己的小兄弟) 1 生成多种形状 在本教程中,我们将创建一个行为,使一个形状绕着另一个形状运行,例如卫星。我们会在生成形状时决定是否具有卫星。如果是的话,那么我们还将生成它的卫星。...如果不是,请对其进行回收,将其从行为列表中删除,然后递减迭代器,这样我们就不会跳过任何行为。可以简单地在列表上调用RemoveAt,因此行为顺序不会改变。...行为列表应该很短,因此我们不必担心像从形状列表中删除时那样,通过对顺序进行改组来优化移除效果。 ? 4.2 动量守恒 现在,卫星的焦点形状不再存在时,它们就会变成规则形状。...我们需要一个IntRange struct值,我们可以通过复制FloatRange并将使用的类型从float更改为int来创建它。 ?...销毁速度仍然有用,但是如果我们想限制形状的数量,则别无选择,只能增加一个硬性限制。让我们定义一个形状填充限制,并使其在每个级别均可配置,因此在GameLevel中为其添加一个字段。 ? ?

    2.1K21
    领券