草庐IT

Algorithm

全部标签

java - 算法 - O(n) 中二叉搜索树的每两个节点之间的距离总和?

问题是找出BinarySearchTree的每两个节点之间的距离之和,给定每个父子对由单位距离分隔。每次插入后都要计算。例如:->firstnodeisinserted..(root)totalsum=0;->leftandrightnodeareinserted(root)/\(left)(right)totalsum=distance(root,left)+distance(root,right)+distance(left,right);=1+1+2=4andsoon.....我想到的解决方案:蛮力。步骤:执行DFS并跟踪所有节点:O(n)。选择每两个节点并计算:O(nC2)_t

java - 使用归并排序对双向链表进行排序

我在互联网上找到了这段代码,它是用于数组的,我想将它更改为双向链表(而不是索引,我们应该使用指针)你能帮我看看我该如何更改合并方法(我有我自己更改了排序方法)这也不是我的家庭作业,我喜欢使用链表!!publicclassMergeSort{privateDoublyLinkedListLocalDoublyLinkedList;publicMergeSort(DoublyLinkedListlist){LocalDoublyLinkedList=list;}publicvoidsort(){if(LocalDoublyLinkedList.size() 最佳

java - 计算角度的标准偏差?

所以我正在开发一个使用罗盘角度(以度为单位)的应用程序。我已经设法通过使用以下内容(在http://en.wikipedia.org/wiki/Directional_statistics#The_fundamental_difference_between_linear_and_circular_statistics找到)来确定角度平均值的计算:doublecalcMean(ArrayListangles){doublesin=0;doublecos=0;for(inti=0;i0&&sin所以我正确地得到了我的均值/平均值,但是我无法得到正确的方差/标准差值。我很确定我计算的方差不

java - 如何改进此 Java 代码以在字符串中查找子字符串?

我最近被要求提交一份工作问题的解决方案。问题:在一个字符串中找到一个子字符串。Input:"Littlestar'sdeepdishpizzasureisfantastic."Search:"deepdishpizza"Output:"Littlestar's[[HIGHLIGHT]]deepdishpizza[[ENDHIGHLIGHT]]sureisfantastic."请注意,在此示例中,荧光笔不必具有完全相同的结果,因为您正在定义什么是好的代码段,并返回最相关的代码段并突出显示查询字词。最重要的要求是像编写生产代码一样编写它。我的解决方案没有被接受。我怎样才能改进它?我知道,我

java - 以更好的方式设计此算法?

我正在处理一个更复杂的版本(车辆在X和Y两个方向上移动)我做这个例子是为了获得更好的方法来完成这个。我有一辆汽车以(24.5872mps)的速度沿X方向行驶我通过使用执行器每100毫秒递增X值来对此进行模拟(以使其X位置更加准确和实时)每一秒后,我都会向另一个进程发送一条消息,其中包含我刚刚覆盖的行的xMin和xMax值另一个进程将用JMS消息(通常是即时的)响应,如果在之前的X区域中存在“坑洞”(消息回调消息到linkedblockingqueue),告诉我停止。我遇到的问题是“通常立即”部分。如果我没有足够快地得到响应,我认为它会影响我的算法的整个计时。处理这种情况的更好方法是什么

java - 为什么要使用两种不同的算法对数组进行排序?

在Arrays类中,快速排序用于对基元进行排序,但对于对象排序,它是归并排序。我想知道为什么会这样? 最佳答案 使用合并排序的原因是他们想要一个稳定的算法——例如其中相等的对象(通过compareTo()或compare())与之前的相对顺序相同。对于原语,平等意味着“不可区分的能力”。当将{5,3,5}排序为{3,5,5}时,这五个中的哪个是第一个并不重要。所以我们可以在这里使用更快(且不稳定)的快速排序算法。 关于java-为什么要使用两种不同的算法对数组进行排序?,我们在Stack

java - 有效地确定排列的奇偶性

我有一个长度为N的int[]数组,其中包含值0,1,2,....(N-1),即它代表一个整数索引的排列。确定排列是奇数还是偶数的最有效方法是什么parity?(如果可能的话,我特别希望避免为临时工作空间分配对象....) 最佳答案 我认为您可以通过简单地计算cycledecomposition在O(n)时间和O(n)空间内完成此操作.您可以通过简单地从第一个元素开始并沿着路径直到返回起点来计算复杂度为O(n)的循环分解。这给了你第一个周期。沿着路径将每个节点标记为已访问。然后对下一个未访问的节点重复,直到所有节点都标记为已访问。长度

java - 为什么我的算法在执行了几次之后变得更快了? ( java )

我有一个数独求解算法,我的目标是尽可能快地完成。为了测试这个算法,我多次运行它并计算平均值。在注意到一些奇怪的数字后,我决定一直打印并得到这个结果:ExecutionTime:4.257746ms(#1)ExecutionTime:7.610686ms(#2)ExecutionTime:6.277609ms(#3)ExecutionTime:7.595707ms(#4)ExecutionTime:7.610131ms(#5)ExecutionTime:5.011104ms(#6)ExecutionTime:3.970937ms(#7)ExecutionTime:3.923783ms(#

java - 在 Java 中获取一个数字的因子数量的最快方法是什么

我正在尝试用Java编写一个函数,该函数将返回特定数字所具有的因子数。应考虑以下限制。应该用BigInteger来完成不允许存储以前生成的数字,因此需要更多的处理和更少的内存。(您不能像this中那样使用“阿特金筛法”)负数可以忽略。这是我目前所拥有的,但它非常慢。publicstaticintgetNumberOfFactors(BigIntegernumber){//Ifthenumberis1intnumberOfFactors=1;if(number.compareTo(BigInteger.ONE) 最佳答案 我可以提出更

java - 如何创建大小大于整数最大值的数组

这个问题在这里已经有了答案:Javaarraywithmorethan4gbelements(11个答案)关闭7年前。我试图获取600851475143之前的所有素数。我为此使用了埃拉托色尼筛法。这需要我创建一个如此巨大的boolean数组。坏主意,你可能会耗尽内存。任何其他方式。我尝试使用一个字符串,使用每个索引值0和1来表示真或假。但是indexOf方法也返回int。接下来我将使用二维数组来解决我的问题。还有其他更好的方法来存储如此庞大的数组吗?