Tag: algorithm

检测一个string是否有独特的字符:比较我的解决scheme“破解编码面试?”

我正在通过“破解编码采访”一书的工作,我在这里遇到问题要求答案,但我需要帮助比较我的答案和解决scheme。 我的algorithm可行,但我很难理解本书中的解决scheme。 主要是因为我不明白一些运营商在做什么。 任务是:“实现一个algorithm来确定一个string是否具有所有唯一的字符,如果不能使用额外的数据结构怎么办? 这是我的解决scheme: public static boolean checkForUnique(String str){ boolean containsUnique = false; for(char c : str.toCharArray()){ if(str.indexOf(c) == str.lastIndexOf(c)){ containsUnique = true; } else { containsUnique = false; } } return containsUnique; } 它有效,但这有多高效? 我看到Java中的String的索引函数的复杂性是O(n * m) 以下是本书的解决scheme: public static boolean isUniqueChars(String str) { if (str.length() > 256) { return false; } int […]

从List <E>中取n个随机元素?

我如何从一个ArrayList<E>获取n个随机元素? 理想情况下,我希望能够连续调用take()方法来获得另一个x元素,而不需要replace。

2个数字之间的区别

我需要完美的algorithm或C#函数来计算2个十进制数之间的差异(距离)。 例如之间的区别: 100和25是75 100和-25是125 -100和-115是15 -500和100是600 是否有一个C#函数或一个非常优雅的algorithm来计算,或者我必须去处理每个案件分别与如果 S。 如果有这样一个函数或algorithm,哪一个呢?

C#确定列表中的重复

要求:在未sorting的列表中,确定是否存在重复。 我会这样做的典型方法是一个n平方的嵌套循环。 我想知道别人怎么解决这个问题。 Linq中有一个优雅的高性能方法吗? 通用的lambda或比较器会很好。

最初的10000个素数的最有效的代码?

我想打印第一个10000个素数。 任何人都可以给我这个最有效的代码? 澄清: 如果您的代码在n> 10000时效率低下,那并不重要。 代码的大小并不重要。 你不能以任何方式硬编码值。

查找数组总和的中位数

给出了两个长度为n的有序数组,其问题是在O( n )时间中求出它们的和数组的中值,它包含数组A的每个元素和数组B的每个元素之间的所有可能的成对和。 例如:令A [2,4,6]和B [1,3,5]是两个给定的数组。 和数组为[2+1,2+3,2+5,4+1,4+3,4+5,6+1,6+3,6+5] 。 在O( n )中查找这个数组的中位数。 在O( n ^ 2 )中解决这个问题是非常简单的,但是有没有解决这个问题的O( n )? 注意:这是一个面试问题,问我的一个朋友,面试官很确定这个问题可以在O( n )时间内解决。

在一个未sorting的数组中查找2个数字等于给定的总和

我们需要在一个数组中find一对数字,其总和等于一个给定的数值。 A = {6,4,5,7,9,1,2} Sum = 10然后这些对是 – {6,4},{9,1} 我有两个解决scheme。 一个O(nlogn)解决scheme – 对2个迭代器(开始和结束)进行sorting+校验和。 一个O(n)解决scheme – 哈希arrays。 然后检查sum-hash[i]是否存在sum-hash[i] 。 但问题是,虽然第二个解决scheme是O(n)时间,但也使用O(n)空间。 所以,我想知道是否可以在O(n)时间和O(1)空间中做到这一点。 这不是功课!

find经过大多数点的直线最有效的algorithm是什么?

问题: N个点在二维平面上给出。 同一条直线上的最大点数是多less? 问题有O(N 2 )解:经过每个点,找出与当前点具有相同dx / dy的点数。 将dx / dy关系存储在哈希映射中以提高效率。 这个问题比O(N 2 )有更好的解决scheme吗?

日历事件的可视化。 用最大宽度布局事件的algorithm

我需要你的一个algorithm的帮助(这将在客户端与JavaScript开发,但并不重要,我最感兴趣的algorithm本身)布置日历事件,以便每个事件框具有最大宽度。 请看下面的图片: Y轴是时间。 所以如果“testing事件”从中午开始(例如),没有更多的交叉,它占用了整个100%的宽度。 “每周回顾”与“摇摇欲坠基督教青年会”和“安娜/阿米莉亚”相交,但后两者不相交,所以他们都填满了50%。 Test3,Test4和Test5都是相交的,所以最大宽度为33.3%。 但Test3是66%,因为Test3是固定的33%(见上面),所以它占用了所有可用空间,这是66%。 我需要一个algorithm来阐明这一点。 提前致谢

如果磁盘上的数据集为1 TB,每个数据logging约为1 KB,那么如何使用512 MB RAM和无限磁盘空间来查找重复数据?

磁盘上有1 TB数据,每个数据logging大约1 KB。 如何使用512 MB RAM和无限磁盘空间查找重复项?