草庐IT

algorithm

全部标签

java - 递归 Karatsuba 乘法不起作用?

我正在尝试实现Karatsubamultiplication通过递归调用。下面的代码应该可以工作,但我总是得到错误的答案。有什么想法吗?publicstaticlongkaratsuba(longx,longy){//basecase:if(x下面是一些测试用例:1)karatsuba(1234,5678)>>>6952652*应该是70066522)karatsuba(4589,7831)>>>34649459*应该是359364593)karatsuba(911,482)>>>44722*应该是472842 最佳答案 您的方法有

java - 在一个范围内随机选择 k 个不同的数字

我需要选择k0ton-1范围内的随机元素.n可以达到10^9。和k范围可以从1ton-1.我只需将包含值0ton-1的数组改组即可在O(n)时间内完成此操作然后先选择k它的元素。但是当k很小,这种方法的时间和内存效率都很低。这个问题有O(k)的解决方案吗?注:已选k数字必须不同。我正在考虑解决方案。我可以想到两种方法。让R是要返回的集合。在范围内选择一个随机值并将其添加到R.继续这样做直到|R|=k.此过程需要sum(n/i)forn+1-k时间和O(k)空间。在数组中插入0到n-1,打乱顺序,先取k它的元素。这个过程需要O(n+k)的时间和空间。所以对于给定的k我可以在O(k)时间内

java - 如何在 Java 中用前导零对数字进行排序?

您好,我有一个带前导零的输入字符串列表,我想知道如何对它们进行排序。输入(未排序)0-20-111-21-01-14-3输出(排序)0-10-211-01-11-24-3我可以删除“-”和前导零,但0-1->1和1->1是相同的,无法排序。我想到的另一件事是删除零,并在这些没有前导零的数字中将0放在后面,所以0-1->11->1010->100然后用Java排序,开始位置后面的数但是排序了?编辑:结构的深度是无限的,所以1-2-3-4-5-6...我只能有一个前导0只允许破折号(-)和点(.)为分米。 最佳答案 我会用-字符拆分字符

java - 这个函数(for 循环)空间复杂度是 O(1) 还是 O(n)?

publicvoidcheck_10(){for(stringi:list){Integera=hashtable.get(i);if(a>10){hashtable.remove(i);}}}这是O(1)还是O(n)?我猜是O(n),但不是每次都重用内存a的位置使其成为O(1)吗? 最佳答案 空间复杂度询问“我在这段代码中使用了多少额外的空间(渐近地,说)”。以下是空间复杂度分析的工作方式,显示了两种一般情况(对于您的代码片段):示例1:按值传递hashtable和list//assume`list`and`hashtable`a

java - JAVA 字符数组中的特定元素排列?

如何列出字符数组中指定的任何字母的所有大写/小写排列?所以,假设我有一个这样的字符数组:['h','e','l','l','o']我想打印出字母“l”的可能组合,以便打印出[hello,heLlo,heLLo,helLo]。这是我到目前为止所拥有的(唯一的问题是我可以打印排列,但是我无法在实际单词中打印它们。所以我的代码打印[ll,lL,Ll,LL]而不是上面的例子。我的代码:importjava.util.ArrayList;importjava.util.HashSet;publicclassMain{publicstaticvoidmain(String[]args){//Sam

java - Java中二维数组的Dijkstra算法

这是一个学校项目;我遇到了很多麻烦,而且似乎找不到可以理解的解决方案。abcdeza-23---b2--52-c3---5-d-5--12e-251-4z---24-那就是二维数组。所以如果你想找到最短的路径,它从a,b,e,d,z=7,and(a,b)=(b,a)-它会带你到新行到该行的相邻路径有没有人可以帮助我为这个例子实现Dijkstra算法?我真的很感激。(我似乎最喜欢数组,映射和集合让我有点困惑,列表是可管理的——尽管此时我愿意研究任何类型的解决方案)[至少我不只是从网上盗用资源。我其实很想学这些东西...真的很难(>.哦,起点是A,终点是Z和大多数人一样,我并不觉得算法的概

java - Hibernate 的批量抓取算法是如何工作的?

我在“Manning-JavaPersistencewithHibernate”中找到了关于批量获取算法的描述:Whatistherealbatch-fetchingalgorithm?(...)Imagineabatchsizeof20andatotalnumberof119uninitializedproxiesthathavetobeloadedinbatches.Atstartuptime,Hibernatereadsthemappingmetadataandcreates11batchloadersinternally.Eachloaderknowshowmanyproxie

java - 有没有一种简单的方法可以将此文本解析为 map

我收到了来自服务的响应,如下所示。如何将其解析为Map?我首先想到的是在空格处拆分,但它不起作用,因为该值可能包含空格,例如查看以下响应中SA键的值。我想到的一个选择是在空格处拆分提供前一个字符是双引号。虽然不确定如何为此编写正则表达式。TX="0000000000108000001830001"FI=""OS="8"CI="QU01SF1S2032"AW="SSS"SA="1525迎风广场" 最佳答案 在引号处解析。您甚至可以使用正则表达式来查找每个键/值对,假设每个值都在引号中。我唯一的问题是,如果值包含嵌入式引号,规则是什么?

java - 遍历n维空间

我正在尝试编写一种算法,让我可以遍历n维空间内的所有所需点,以找到函数f(x)的最小值,其中x是大小为n的vector。显然,搜索2维或3维空间非常简单,您可以简单地执行以下操作:for(inti=0;i不幸的是,对于我的问题,空间的维数不是固定的(我正在为统计程序中的许多函数编写一个通用的最小值查找器)所以我必须为我想要的每个n值编写循环使用-最终可能会相当大。我一直在努力思考如何使用递归来做到这一点,但看不到解决方案-尽管我确信那里有解决方案。解决方案不一定是递归的,但它必须通用且高效(嵌套循环中最内层的行将被调用很多...)。我表示搜索量的方式是一个二维double组:doubl

java - 将中缀表达式(带括号)转换为二叉树

作为Java赋值的一部分,我必须采用输入算术表达式并将其存储在二叉树中。除了我读入表达式的字符串并将其存储在二叉树中的部分外,我已经完成了赋值所需的一切。我创建了一个名为BinaryTree的类。它唯一的字段是一个名为root的树节点。此树节点在二叉树中定义为内部类。它有3个字段、一个通用数据字段和两个BinaryTree类型的子项(左和右)。我很难定义用于读取表达式的算法,例如(5*(2+3)^3)/2并像这样将其存储在树中/^2*35+23任何人都可以帮助算法吗? 最佳答案 看看shunting-yardalgorithm.来自