我有这个问题需要以最有效的方式解决。我有一个包含以下内容的二维数组:所有为1的东西都是一堵“墙”,这意味着你无法穿过它。2是您“输入”数组或映射(如果您愿意)的入口。3是我们需要找到的东西。这是map的示例:1111111131312111111311111111这可能是我需要查看的数组示例。如您所见,有一个“无法到达,因为它被墙“1”包围的3”。这意味着有两个可用数字这个数组。首先我们需要找到入口。由于入口可以在任何地方,所以我需要搜索整个阵列。我做了以下事情:inttreasureAmount=0;Pointentrance=newPoint(0,0);for(inti=0;i这需
我有一张图片,我用我的程序详细说明以获得坐标列表。图像中表示有一个矩阵。在理想的测试中,我只会得到矩阵每个方block的十六个中心点。但在实际测试中,我采取了相当多的噪声点。我想使用一种算法从坐标列表中推断出由最能代表矩阵的16个坐标组成的组。矩阵可以有任何纵横比(在一个范围内)并且可以产生一点旋转。但始终是一个4x4矩阵。矩阵并不总是出现在图像中,但这不是问题,我只需要最佳匹配。当然成立点总是大于16(或者我跳过)建立点的例子:期望结果示例:如果有人可以向我推荐一种首选的方式来执行此操作,那就太好了。我在考虑点之间的欧氏距离。Foreachpointinthelist:1.calcu
我正在使用我创建的链表,其中包含一组数字作为数据。我需要找到一种方法来测试此列表的每个可能的两组分区,为此,我需要将列表分解为每个可能的两组组合。顺序并不重要,而且会有重复。Forinstance,foralistofnumbers{1431},thepossiblesplitsare{1}and{4,3,1}{4}and{1,3,1}{3}and{1,4,1}{1}and{1,4,3}{1,4}and{3,1}{1,3}and{4,1}{1,1}and{4,3}4个数字的列表并不难,但随着列表变大,事情变得越来越复杂,而且我很难看出规律。谁能帮我找到一个算法?编辑:抱歉,我没看到问题
我目前正在研究A*Algorithm的实现两个节点之间的距离不规则。包含节点的图是有向加权图。每个节点都至少连接到一个其他节点,也可能存在不同距离的对称连接。节点只是一个标签,不包含任何特殊信息我需要的是一种启发式方法,以尽可能准确地确定从任何节点A到另一个节点B的最短路径。我尝试使用一种启发式方法来返回到节点最近邻居的距离,但当然这不如完全没有启发式方法有效(=Dijkstra)。我的A*算法实现主要由2个类组成,算法本身的类(AStar)和节点的类(Node)。该代码主要基于维基百科伪代码。AStar.java源代码publicclassAStar{privateAStar(){}
如果我有一个乘法表,例如3x5:123452468103691215我把所有这些数字按顺序排列:122334456689101215中间的数字是多少?在这种情况下,它是5。N和M总是奇数,所以只能有一个答案。有没有快速的解决方案?我正在寻找O(NlogNM)行中的内容这是某种家庭作业,但我真的迷失了这个。我提出了一些想法,但它们都有一些缺点:publicclassTable{publicstaticvoidmain(String[]ar){Scannerscanner=newScanner(System.in);intw=scanner.nextInt();inth=scanner.n
我目前正在用Java制作迷宫解谜游戏,但遇到了麻烦。我能找到的所有随机迷宫生成算法都以一种我无法弄清楚如何在我当前代码中实现的方式输出。我正在考虑使用DepthFirstSearch,RecursiveBacktracker,或Prim'sAlgorithm,因为我认为它们是最容易实现的,同时还能产生好的迷宫。使用与我当前程序一起使用的那些算法之一的工作用途是什么?这是我的游戏类:(也请随时指出任何不好的做法,我是Java的新手)packagegame;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicc
最近遇到这样一个问题:假设你有一个intN,还有一个int[]并且这个数组中的每个元素只能使用一次。我们需要设计一种算法,通过将这些数字相加得到1到N,并最终返回我们需要相加的最少数字。例如:N=6,arrayis[1,3]1:wealreadyhave.2:weneedtoaddittothearray.3:wecangetitbydoing1+2.4:1+3.5:2+3.6:1+2+3.Sowejustneedtoadd2toourarrayandfinallywereturn1.我正在考虑使用DFS来解决这个问题。你有更好的解决方案吗?谢谢! 最佳答案
问题如下我需要跟踪url+点击次数。我需要能够在用户点击url时使用点击次数快速更新url。我需要能够快速检索点击次数最多的10个URL。注意:假设您不能使用数据库。实现结果的最佳数据结构是什么?我之前考虑过使用map,但map不会跟踪前10次点击的顺序。 最佳答案 您需要一个额外的List>保持前十名,T是最低的点击次数。如果您计算另一次点击并且此计数仍不大于T:什么都不做。如果增加的计数大于T,检查URL是否在列表中。如果是,什么也不做。如果不是,则将此条目添加到列表中,如果列表超过10个条目,则排序并删除最后一个条目。更新T。
我在面试中遇到了这个问题。假设您有一个未排序的整数数组,其可能值为正、负和零。您还有一个变量k它持有一个整数。现在找到一对或多对,非重复的,如果存在,其乘积大于k.k可以是任何东西,+ve、-ve或零约束:您不能操作数组,这意味着任何排序或复制原始数组然后排序或更改值都受到限制。如果可能,它应该低于O(n^2)时间复杂度和最小空间(没有明确提到空间,但他们说使用尽可能低的空间)例如:给定Array[0,-1,5,45,4,1,-3]和k=20我的解决方案在面试中给出:我的解决方案:第一个是蛮力使用O(N^2)并尝试为该对获取产品并进行检查。现在我即兴创作了以下逻辑假设k=40,我得到了
有一种方法可以从文本中搜索子串(使用暴力算法,请忽略空指针)publicstaticintforceSearch(Stringtext,Stringpattern){intpatternLength=pattern.length();inttextLength=text.length();for(inti=0,n=textLength-patternLength;i奇怪!使用相同的算法,但下面的代码更快!!!publicstaticintforceSearch(Stringtext,Stringpattern){intpatternLength=pattern.length();int