草庐IT

algorithm

全部标签

java - 旋转有序数组搜索

正在研究以下算法难题。发布问题陈述和解决方案。问题是,我们是否需要“搜索两半”部分来保证它的安全?或者当a[left]==a[mid]时,我们可以只搜索右边的部分而不检查是否a[mid]==a[right]--因为什么时候a[left]==a[mid],我认为左边的所有元素都是相等的,不能满足搜索条件找值。更详细的说,我的意思是写lastelseifas是否安全,elseif(a[left]==a[mid]){returnsearch(a,mid+1,right,x);}问题陈述给定一个由n个整数组成的排序数组,该数组已经旋转了未知次数,请编写代码找到一个元素在数组中,你可能会假设数组

java - 删除最小边数以断开图中的两个顶点

在这里,我试图断开图中的两个顶点,尽可能减少边缘移除。在这个位于两个顶点A和Z之间的图中,您可以通过多种方式找到答案。以最佳方式,您可以只删除从A到B的一条边。有没有具体的算法呢?我发现了一些通过使用最大流最小切割问题来解决这个问题的建议,但我没有得到将这个问题转换为最大流最小切割定理的一般想法。同样在这个过程中,我可能最终会删除F和G之间的边缘,这是无用的。 最佳答案 这可以使用MaxFlow-MinCut问题来解决。您可以按如下方式将图形建模为网络流:1.将A作为源点,Z作为汇点。2.设置每条边的容量为1个单位。现在,解决上述网

java - Wagner Fischer算法+展示步骤

我用java实现了WagnerFischer算法,但我想显示所有步骤。我搜索但找不到任何想法。很长一段时间后,我试图将每个转换与成本一起保存在矩阵中,然后回到第一个解决方案然后反转它......这是一个好主意,如果是,应该如何我设置条件?kitten->sitting1.replacekwiths2.keepi3.keept4.keept5.replacet6.addg我试图为显示步骤创建函数,但不知道如何解决。importjava.io.File;importjava.io.FileNotFoundException;importjava.util.Scanner;publiccla

java - 在Java深度生成列表n层的所有组合

我正在使用以下代码来生成大小为s的组合的列表:publicstatic>List>combinations(Listitems,intsize){if(size==1){List>result=newArrayList();for(Titem:items){result.add(Collections.singletonList(item));}returnresult;}List>result=newArrayList();for(inti=0;i>additionalItems=combinations(items.subList(i+1,items.size()),size-1)

java - 获取由Voronoi线段形成的凸多边形集的最快方法

我使用Fortune算法找到一组点的Voronoi图。我得到的是一个线段列表,但我需要知道哪些线段形成闭合多边形,并将它们放在一个由它们围绕的原始点散列的对象中。找到这些内容的最快方法是什么??我应该从算法中保存一些重要信息吗?如果是什么?这是我在Java中从C++实现移植的fortune算法的实现hereclassVoronoi{//ThesetofpointsthatcontrolthecentersofthecellsprivateLinkedListpts;//Alistoflinesegmentsthatdefineswherethecellsaredividedprivat

java - 在 Java 中处理巨大的文本文件

老师给我布置了一份英语词汇作业。Choosearandomalphabet,say'a'Writeawordfromthealphabet,say'apple'Takethelastword'e'Writeawordfrome,sayelephantNowfrom't'andsoon..Norepetitionallowed列出500个单词。将list邮寄给老师。:)所以我没有自己做,而是在编写Java代码,它会为我完成作业。代码看似简单。算法核心:从字典中随机选取一个满足要求的单词。seek()与RandomAccessFile。尝试将其放入有顺序的集合中(可能是LinkedHash

java - 近似搜索字符串列表

是的,我读到了如何在字符串之间使用编辑距离来决定两个字符串彼此之间的“接近”程度。该算法作为动态问题实现,需要O(mn)时间,其中m和n分别是文本和模式的长度。因此,如果我必须将一个字符串与5000多个其他字符串进行匹配,这将花费大量时间,这在我的应用程序中是完全不能接受的。有没有可以实现的更快的解决方案?我不介意用存储空间换取时间。我在Android上看到一个名为“Swype”的应用程序,它执行类似的操作。它根据自己的数据库搜索您的查询并建议结果。怎么会这么快?注意:请不要推荐像Lucene这样的框架,因为我无法在J2ME上运行。 最佳答案

java - 如何在文本文件中搜索多个字符串

我正在处理文本文件。我想用Java实现一个搜索算法。我有一个文本文件需要搜索。如果我想找到一个词,只需将所有文本放入HashMap中并存储每个词的出现即可。但是如果我想搜索两个字符串(或者可能更多),有什么算法吗?我应该对两个字符串进行哈希处理吗? 最佳答案 这在很大程度上取决于文本文件的大小。通常有几种情况您应该考虑:对非常短的文档(网页、论文长度的文本等)进行大量查询。像普通语言一样的文本分布。一个简单的O(n^2)算法就可以了。对于长度为n的查询,只需取一个长度为n的窗口并将其滑过。比较并移动窗口,直到找到匹配项。该算法不关心

java - 确定一个球体是否被放置在它周围的其他球体完全包围

问题:给定一个球体列表,找到所有被球体完全包围的空白空间。详细信息:这是我正在研究的一个问题,我试图确定位于蛋白质中的空腔。我得到了构成蛋白质的原子列表((x,y,z)坐标和半径)。然后我运行我的算法,通过检查是否可以将探针(给定半径)放置在一个位置而不与其他球体发生碰撞,从而找到位于蛋白质边界内的所有空白空间。有两种类型的空隙,空隙和空腔。空隙空间是可以通向蛋白质或位于蛋白质外部的空间。空腔是完全被蛋白质原子包围的空隙。这是我们正在处理的样本“蛋白质”的图片。可以三个维度查看here.在蛋白质的中心附近有一个空腔,您看到的穿过蛋白质的隧道将被视为空隙空间,因为它没有被原子完全包围。示

java - 寻找有关 trie 的良好介绍

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭9年前。Improvethisquestion我正在寻找有关Tries的介绍/教程。我用谷歌搜索发现的大多数链接对我来说要么过于简洁抽象,要么过于琐碎。有人可以提供一个很好的Java示例引用供我学习吗?谢谢