Tag: algorithm

如何find至less重复N / 2次的数组元素?

给定一个包含N个元素的数组。 我们知道其中一个元素至less重复N / 2次。 我们对其他元素一无所知。 他们可能重复或可能是独一无二的。 有没有办法find一次重复至lessN / 2次的元素,或者可能是O(N)? 没有额外的空间可以使用。

recursion与迭代

是否正确地说,无处不在recursion使用for循环可以使用? 如果recursion通常比较慢,那么循环迭代使用它的技术原因是什么? 如果总是有可能将recursion转换为for循环,那么有一种经验法则可以做到这一点?

我如何获得两个数组之间的交集作为一个新的数组?

在各种情况下,我多次遇到这个问题。 尽pipe我对C或Java感到满意,但它对所有的编程语言都是通用的。 让我们考虑两个数组(或集合): char[] A = {'a', 'b', 'c', 'd'}; char[] B = {'c', 'd', 'e', 'f'}; 我如何获得两个数组之间的公共元素作为一个新的数组? 在这种情况下,数组A和B的交集是char[] c = {'c', 'd'} 。 我想要避免在另一个数组内重复迭代一个数组,这将会增加执行时间(长度是B的A倍长度),这对于巨大的数组来说太多了。 有没有什么办法可以在每个数组中进行一次传递以获得通用元素?

什么algorithm可以用来确定AI的“最佳举动”?

在一个井字游戏的实现中,我猜测挑战性的部分是确定机器玩的最佳动作。 什么是可以追求的algorithm? 我正在考虑从简单到复杂的实现。 我怎么去解决这个问题的这个部分呢?

你如何validation二叉search树?

我在这里阅读了一个被称为validation二叉search树的访谈练习。 这个工作到底如何? 在validation二叉search树时会寻找什么? 我写了一个基本的search树,但从来没有听说过这个概念。

近似string匹配algorithm

在工作中,我们经常需要从string列表中find与其他inputstring最接近的string。 目前,我们正在使用Needleman-Wunschalgorithm。 该algorithm通常会返回大量的误报(如果我们将最小分数设置得太低),有时在它应该(当最小分数太高时)找不到匹配,并且大多数时候,我们需要手工检查结果。 我们认为我们应该尝试其他的select。 你有什么经验的algorithm? 你知道这些algorithm是如何相互比较的吗? 我真的很感激一些build议。 PS:我们用C#编写,但是你不应该关心它 – 我总是在问一些algorithm。 哦,对不起,我忘了提这个。 不,我们没有使用它来匹配重复的数据。 我们有一个我们正在寻找的string列表 – 我们称之为search列表。 然后,我们需要处理各种来源(如RSS提要,网站,论坛等)的文本 – 我们提取这些文本的一部分(有一整套的规则,但这是不相关的),我们需要匹配那些违反search列表。 如果string匹配search列表中的一个string – 我们需要做一些事情的进一步处理(这也是不相关的)。 我们不能进行正常的比较,因为从外部来源提取的string,大多数情况下,包括一些额外的单词等。 无论如何,这不是重复检测。

在球体上均匀分布n个点

我需要一个algorithm,可以让我围绕一个球体的位置N点(可能less于20),模糊地扩散出去。 没有必要“完美”,但我只是需要它,所以没有一个捆绑在一起。 这个问题提供了很好的代码,但是我找不到一个统一的方法,因为这看起来是100%随机的。 这个博客文章推荐有两种方法允许input球体上的点数,但是Saff和Kuijlaarsalgorithm正好在我能够转录的伪代码中 ,并且我find的代码示例包含了“node [k]”,我不能看到解释和破坏的可能性。 第二个博客的例子是黄金分割螺旋,它给了我奇怪的结果,没有明确的方法来定义一个恒定的半径。 从这个问题的 algorithm似乎可能工作,但我不能拼凑在那个页面上的东西到psuedocode或任何东西。 我遇到的其他一些问题的线程说随机均匀分布,这增加了我不关心的复杂程度。 我很抱歉,这是一个如此愚蠢的问题,但我想表明,我真的看上去很努力,但仍然不足。 所以,我正在寻找的是简单的伪代码来均匀分布单位球体周围的N个点,要么返回球面坐标或笛卡尔坐标。 甚至更好,如果它甚至可以散布一点随机(认为行星围绕一个明星,体面散开,但有余地余地)。

devise一个堆栈,使getMinimum()应该是O(1)

这是面试问题之一。 您需要devise一个包含整数值的堆栈,以便getMinimum()函数返回堆栈中的最小元素。 例如:考虑下面的例子 情况1 5 – > TOP 1 4 6 2 当调用getMinimum()时,它应该返回1,这是最小的元素 在堆栈中。 情况#2 stack.pop() stack.pop() 注:5和1都从堆栈中移出。 所以在这之后,堆栈 好像, 4 – > TOP 6 2 当getMinimum()被调用时,应该返回2,这是最小的 叠加。 制约性: getMinimum应返回O(1)中的最小值 在devise时还必须考虑空间约束,如果使用额外的空间,则空间应该是恒定的。

广度第一深度第一

当遍历一棵树/图时,宽度优先和深度优先之间的区别是什么? 任何编码或伪代码的例子会很好。

代表和解决迷宫的形象

代表和解决一个迷宫的最佳方式是什么? 给出一个JPEG图像(如上所示),读入它的最佳方式是什么,将其parsing为一些数据结构并解决迷宫问题? 我的第一本能是逐像素地读取图像,并将其存储在布尔值的列表(数组)中:对于白色像素为True ,对于非白色像素为False (可以丢弃颜色)。 这个方法的问题是,图像可能不是“像素完美”。 我只是说,如果在墙上的某个地方有一个白色像素,它可能会产生一个无意的path。 另一种方法(经过一番思考后find的)是将图像转换为SVG文件 – 这是在canvas上绘制的path列表。 这样,path可以被读入相同types的列表(布尔值),其中True表示path或墙壁, False表示可行驶的空间。 如果转换不是100%准确的,并且没有完全连接所有的墙壁,则会产生这种方法的问题,造成空白。 另外一个转换为SVG的问题是线条不是“完美”的直线。 这导致path为三次贝塞尔曲线。 对于由整数索引的布尔值列表(数组),曲线不会轻易转移,曲线上的所有点将不得不计算,但与列表索引不完全匹配。 我认为,虽然其中一种方法可能有效(尽pipe可能不是),但鉴于这样一个大的形象,它们可能是效率低下的,而且存在一个更好的方法。 这是如何最好(最有效和/或最简单的)? 还有最好的方法吗? 然后是解决迷宫。 如果我使用前两种方法中的任何一种,我将基本上以matrix结束。 根据这个答案 ,代表一个迷宫的一个好方法是使用一棵树,而解决这个问题的一个好方法是使用A *algorithm 。 如何从图像中创build一棵树? 有任何想法吗? TL; DR 最好的parsing方法? 进入什么数据结构? 上述结构如何帮助/阻碍解决? UPDATE 我已经试过我的手在实现@Mikhail使用numpy编写的Python,就像@Thomas推荐的一样。 我觉得这个algorithm是正确的,但是这个algorithm并没有像预期的那样工作。 (代码如下)PNG库是PyPNG 。 import png, numpy, Queue, operator, itertools def is_white(coord, image): """ Returns whether (x, y) is approx. a white […]