草庐IT

algorithm

全部标签

java - 划分数组的方法数

我想找到将数组分成3个连续部分的方法的数量,使得这三个部分的总和相等-10^9我的方法:接受输入并检查基本案例:for(inti=0;i如果答案不在上面,则形成前缀和后缀之和。for(inti=1;i后缀和更新二进制索引树:for(inti=n;i>=3;i--){xx+=a[i-1];if(xx==sum/3){update(i,1,suffix);}}现在简单地循环数组以找到总方法:intans=0;for(inti=1;ii+1}}我对上述方法得到了错误的答案我不知道我在哪里犯了错误请帮助纠正我的错误。更新查询功能:publicstaticvoidupdate(inti,intv

java - 如何排序 List<File> 以首先列出目录并按目录对文件进行分组?

为了获取指定目录中包含的所有文件并根据一些扩展名,我使用了方法listFiles类FileUtils来自ApacheCommonsIO库,如以下代码示例所示。ArrayListwildcards=newArrayList();wildcards.add("*.cpp");wildcards.add("*.h");wildcards.add("*.txt");Filedir=newFile("/path/to/dir");Collectionfound=FileUtils.listFiles(dir,newWildcardFileFilter(wildcards,IOCase.SENSI

java - 算法 : Hybrid MergeSort and InsertionSort Execution Time

美好的一天SO社区,我是一名CS学生,目前正在进行结合MergeSort和InsertionSort的实验。据了解,对于某个阈值S,InsertionSort将比MergeSort具有更快的执行时间。因此,通过合并两种排序算法,将优化总运行时间。但是,在多次运行实验后,使用1000的样本大小,不同大小的S,每次实验的结果都没有给出确定的答案。这是获得的更好结果的图片(请注意,有一半的时间结果不是确定的):现在,尝试样本大小为3500的相同算法代码:最后,以500,000的样本量尝试相同的算法代码(注意y轴以毫秒为单位:尽管从逻辑上讲,当S目前,这些是教给我的时间复杂度:合并排序:O(n

java - Union+Find算法的应用(Disjoint Set)

问题陈述:方程式以A/B=k格式给出,其中A和B是表示为字符串的变量,k是实数(float)。给出一些查询,返回答案。如果答案不存在,返回-1.0。示例:给定a/b=2.0,b/c=3.0.查询是:a/c=?,b/a=?,a/e=?,a/a=?,x/x=?返回[6.0,0.5,-1.0,1.0,-1.0]输入是:vector>equationsvector&valuesvector>queries哪里equations.size()==values.size(),并且值为正。这表示方程式。返回vector.根据上面的例子:方程式=[["a","b"],["b","c"]]值=[2.0,

java - 字符串模式匹配

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预期结果。另请参阅:StackOverflowquestionchecklist关闭9年前。Improvethisquestion我不知道如何解决这个问题:给定两个字符串,一个代表一个模式,一个随机字符串,判断它的模式是否与第一个字符串匹配例如:string1:"aaba"string2:"catcatdogcat"因此,string1和string2是模式匹配的如果string2是"catcatca

java - 包含 k 个列表中每个列表中至少一个数字的最小范围

您有k个排序整数列表。从每个k列表中找出至少包含一个数字的最小范围。例如,List1:[4,10,13,14]List2:[0,9,15,18]List3:[5,18,22,30]此处的最小范围是[14,18],因为它包含list1中的14,15来自list2,18来自list3。我的做法是:只需使用MinHeap并从K列表中插入第一个元素删除最小元素并添加相应列表中的下一个元素同时跟踪最大值和最小值,以便我们计算最小范围但我面临的唯一问题是:假设对于一个列表,剩下的元素不多于我应该在那里完成还是应该继续? 最佳答案 非常好的O(n

java - 简而言之,后缀树的 Java 实现和用法?

我正在寻找一个简短的Java后缀树构建/使用算法。到目前为止,我发现的最好的是语义发现工具包,但实现有几千行长并且跨越几个类。理想情况下,实现应尽可能短,不超过几百行。有没有人有这样的实现? 最佳答案 我刚刚完成了后缀树的Java实现。在我的blogentry您可以找到有关后缀树的更多信息,查看如何使用我的库,以及使用Subversion和Maven下载和构建库。是的,它比单个类文件中的几行要长,但它有大量文档,并且是为在现实世界中实际使用而创建的。此外,它使用Ukkonen方法进行线性时间构造。(这里提到的大多数实现至少有O(n^

java - Java 中的有向图处理

我希望实现一个Java应用程序,该应用程序将计算一组要执行的任务。这些任务将相互依赖,形成一个有向图。是否有现有的SDK或算法(最好是Java)可以帮助我:定义任务图确保图中没有循环依赖使用线程池执行图中的任务第3步是最重要的部分。我需要以并行方式执行任务以获得最佳性能,同时确保任务不会在其依赖项之前执行。 最佳答案 看看之前的question,这基本上建议使用JGraphT.它显然会使1)变得容易,并且具有用于第3部分的循环检测器)。不要认为它会为您完成第3部分,但您需要做的就是获取所有出度数(或度数取决于您的表示)为0的顶点并开

java - 计算从 167.37 美元中赚取(钱)零钱的不同方式?

这是一道面试题:Givenanamount,say$167.37findallthepossiblewaysofgeneratingthechangeforthisamountusingthedenominationsavailableinthecurrency?谁能想到空间和时间高效的算法和支持代码,请分享。这是我编写的(有效的)代码。我正在尝试找到它的运行时间,感谢任何帮助importjava.util.HashMap;importjava.util.Iterator;importjava.util.LinkedList;importjava.util.Map;publicclas

java - Dijkstra算法是否有双向搜索的实现?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭6年前。社区在去年审查了是否重新打开这个问题并让它关闭:原始关闭原因未解决Improvethisquestion我正在寻找Java中Dijkstra(或任何其他源到目的地最短路径算法)的双向搜索(也称为“中间相遇”算法)的实现。由于双向搜索处理比看起来更棘手(GraphAlgorithms,p.26),我想在重新发明轮子之前考虑现有的实现!P.S.:我说的是bidirectionalsearch,不要与双向图混淆