当前位置:主页 > 查看内容

在两个堆栈上实现队列:我作为面试官的总结

发布时间:2019-04-22 10:19| 位朋友查看

简介:关于之前的想法毫无疑问。 但是,有一些细节可以优化。 也就是说,当设备卸载时,s1的元素一个接一个地倒入s2中,而s1堆栈底部的元素不会倒入s2(即只有s1被倒置)。 Count()-1)可……
关于之前的想法毫无疑问。
但是,有一些细节可以优化。
也就是说,当设备卸载时,s1的元素一个接一个地倒入s2中,而s1堆栈底部的元素不会倒入s2(即只有s1被倒置)。
Count()-1)可以直接显示为返回队列输出元素。
这可以减少推送栈操作。
大约一半的人会在要求时注意到这个问题。
一些以前的想法,例如:
加入团队时,首先确定s1是否为空。如果不为空,则表示所有元素都在s1中。此时,将内接元素直接按压到s1。如果它是空的,则需要将s2的元素逐个返回到s1,然后按。
离开团队时,首先确定s2是否为空。如果不为空,则直接弹出s2的顶部元素并退出设备。如果为空,则将s1的元素逐个倒入s2,然后弹出最后一个元素和结尾。
有些人可能会同时考虑公共方法及其变体。我们必须说,心灵仍然是相对光环。
与第一种方法相比,s2突变体似乎是懒惰的。在每个团队之后,它不会将元素返回给s1。下次捕获时,效率会更高,但效率不如第一种方法,这样可以在下次加入团队时提高效率。
您可能希望允许访调员分析不同方法的表现。
当我(没有彻底调查),提示题和退出操作是随机分布的,时间的总体复杂性和前两种方法的空间复杂性是相似的没有区别。判决)。
实际表现实际上是另一种变体。
换句话说
进入设备时,按s1的元素。
离开团队时,确定s2是否为空。如果不为空,请直接打开顶部元素。如果为空,将s1的元素逐个倒入s2,将显示最后一个元素和结尾。
这种思维方式可以防止重复堆叠,并在需要时仅丢弃一次。
然而,在实际的采访中,很少有人说它可能是短暂的。
以前的想法没有问题,但仍有一些细节需要考虑。
实际上,无论方法或情况如何,如果设备上没有可用项目,有必要考虑如何处理(如果两个电池都为空,则关闭队列操作肯定会导致异常)马苏)。
编写代码时,请忽略这些决策和异常处理。这样,程序就会出问题。
因此,如果您可以考虑这些细节,您还可以反映个人品质。
就个人而言,这个问题确实有助于我确定我要求的人。
但是对于面试来说,这取决于面试官的基本素质。一个(或几个)问题是不可取的。

本站推荐

图片说说

岸桥歌曲,歌曲日。

game365打不开 点击:80

完全开放的32核AMD瑞龙29

game365打不开 点击:80