草庐IT

algorithm

全部标签

java - 2个Java方法java.lang.NullPointerException

我在以下代码上收到错误java.lang.NullPointerException错误。算法:如果n≤3,则通过蛮力找到最接近的点并停止。找到一条垂直线V,以将输入集分成两个不相交的子集PL和PR,它们的大小尽可能相等。左边或线上的点属于PL,右边或线上的点属于PR。因为集合是不相交的,所以任何点都不属于两者。递归地找到PL中最接近的点对的距离δL和最接近的点的距离δR在PR中配对。令δ=min(δL,δR)。输入集合P中的一对最接近点的距离或者是在递归步骤中找到的点的距离(即δ),或者由PL中的点和PR中的点之间的距离组成。来自PL的唯一候选点和来自PR的唯一候选点必须位于由V线左侧

java - 预计算大型值表

我的程序中有一个数学公式,它接受两个介于0和1之间的值,并且需要做大量工作才能找到答案。我也希望能够做相反的事情,即我想知道什么输入值会产生特定的输出。我无法通过分析来做到这一点,因为可以从大量输入中得出相同的答案,而且公式太复杂了。我的问题是我目前正在做这样的事情,这需要相当长的时间来计算for(doublei=0;i鉴于公式是静态的,我当然可以预先计算这些值。我认为查找一个值比执行许多计算要快得多。我以前从来没有做过这样的事情。有谁知道要使用什么数据结构/如何索引/如何存储结果?目前我唯一的想法是我可以以某种方式对答案进行排序以减少搜索空间,或者只是在运行时初始化一个巨大的数组。如

java - 三次贝塞尔曲线 : Maximum Gradient and Collision Avoidance?

我使用贝塞尔曲线作为我的宇宙飞船在停靠车站时的行进路径。我有一个简单的算法来计算船舶在时间t沿三次贝塞尔曲线的位置:publicclassBezierMovement{publicBezierMovement(){//startdockingstraightawayinthistestversioninitDocking();}privateVector3p0;privateVector3p1;privateVector3p2;privateVector3p3;privatedoubletInc=0.001d;privatedoublet=tInc;protectedvoidinitD

java - 燃料图平滑算法

我正在开发车队管理系统,其中一项任务是显示表示车辆油耗的图表(基于来自CANbus的数据)。如果数据值介于0和100之间,则表示百分比。所以,如果我得到一个整数45,这意味着油箱中的燃料是45%。但是,如果载具在移动,由于船舶的物理特性,可能会出现不一致的数据。例如,一个数据系列可能是:76,76,75,74,73,73,71,7076,70,75,76,77,76,74,74,73,72,69,72,73,73,72,71我想平滑这些值,但是根据我选择一次平均多少个值,结果是不同的。关键问题是,有时我必须在图表中显示一些消耗和补充能量的时刻,并且不能平滑。我可以使用什么样的算法来分析

java - 计算链表中值的总和

我最近在面试中遇到了一个编程问题。有2个链表。每个节点存储一个从1到9的值(表示数字的一个索引)。因此123将是一个链表1->2->3任务是创建一个函数:staticLinkedListNodegetSum(LinkedListNodea,LinkedListNodeb)这将返回2个链表参数中值的总和。如果数组a是:1->2->3->4而数组b是:5->6->7->8答案应该是:6->9->1->2这是我的算法:遍历a和b中的每个节点,获取整数值并将它们相加。使用这些值创建一个新的链表。代码如下:我假设它的运行复杂度为O(n)。一次通过每个数组输入,一次创建输出数组。有什么改进吗?更好

java - 如何确定 GPS 坐标是否位于矩形区域内?

我在Stackoverflow和其他网站上经历了许多类似的问题,我的解决方案基于这些答案,但我仍然无法让它工作......我的问题:我想确定某个GPS位置P是否位于由四个给定GPS坐标A包围的矩形区域内>,B,C,D.目前我正在计算三角形ABP、BCP、CDP和DAP的面积。如果这些区域中的任何一个大于零(请不要生气,数学家),该点位于我的矩形之外,如解释的那样here.代码:privatestaticdoubletriangleArea(Locationa,Locationb,Locationc){//(C.x*B.y-B.x*C.y)-(C.x*A.y-A.x*C.y)+(B.x*

java - 将二叉树存储在数组中

假设有一棵像下面这样的二叉树需要存储在一个数组中。7/\110/\911而且我发现在数组中存储节点的公式从将根节点存储在位置0开始,然后对于索引i处的每个节点,其子节点都放在索引(i*2)+1和(i*2)+2。如果任一子节点的索引大于array.length-1,则该节点没有子节点。所以我首先将7放在位置0,然后将其子元素1和10放在位置i2+1和i2+2,即1和2:|7|1|10||||012345现在,我遇到了没有任何子节点的节点1。我应该把什么作为它的child?是否可以设置一些表示节点不存在的默认值,例如-1,如下所示:|7|1|10|-1|-1|9|11|01234567

带有比较器的java heapify方法

我正在尝试编写一个类HeapQueue。我将根的左child存储在2*indexOfRoot+1索引处,将右child存储在2*indexOfRoot+2处。publicclassHeapQueueimplementsPriorityQueue,BinaryHeap{publicListqueue;publicComparatorcomparator;publicHeapQueue(){queue=newArrayList();}publicvoidsetComparator(Comparatorcomparator){this.comparator=comparator;heapif

java - 类似于Knapsack Java代码的动态规划算法

关键任务生产系统有n个必须按顺序执行的阶段;第i阶段由机器M_i执行。每台机器M_i都有可靠运行的概率r_i和失败的概率1-r_i(并且失败是独立的)。因此,如果我们用单台机器实现每个阶段,则整个系统工作的概率是r_1,r_2,...,r_n。为了提高这个概率,我们通过拥有执行阶段i的机器M_i的m_i个副本来增加冗余。所有m_i个副本同时失败的概率只有(1-r_i)^(m_i),所以第i阶段正确完成的概率为1-(1-r_i)^(mi),而全部正确完成的概率系统工作是prod(i=1,n){1-(1-r_i)^(m_i)}。每台机器M_i的成本为c_i,购买机器的总预算为B。(假设B和

java - 如何使两点算法之间的最短路径更快?

我写了这个算法。它有效(至少对于我的简短测试用例),但在较大的输入上花费的时间太长。我怎样才能让它更快?//Returnsanarrayoflength2withthetwoclosestpointstoeachotherfromthe//originalarrayofpoints"arr"privatestaticPoint2D[]getClosestPair(Point2D[]arr){intn=arr.length;floatmin=1.0f;floatdist=0.0f;Point2D[]ret=newPoint2D[2];//Ifarrayonlyhas2points,ret