草庐IT

algorithm

全部标签

javascript - 返回最大累计利润

我正在做一个我无法解决的练习。我需要通过买卖比特币来获得最大的累计利润。我有一个函数(A,Y),它在一段时间内接收一个A=不同价格的数组和一个Y=费用限制:注意:如果比特币以0的价格买入并以1的价格卖出,我们将损失A[1]-A[0]=7050-7200-Y=-200。因此,没有进行该运动。注意2:您当时只能拥有1个比特币。要卖,你必须先买。要购买,您需要之前一无所有或已售出。注3:运动需要是时间的结果。您不能在A[5]买入并在A[4]卖出注4:如果不能盈利,则返回0复杂度为O(N)A=[7200,7050,7300,7500,7440,7200,7300,7280,7400]//exp

javascript - 按小数位格式化数字

我正在尝试转换一组数字,使每个数字只有一个非零数字。所以基本上"7970521.5544"会给我["7000000","900000","70000","500","20","1",".5",".05",".004",".0004"]我试过:varj="7970521.5544"vark=j.replace('.','')varresult=k.split('')for(vari=0;i任何想法,我不确定从这里去哪里? 最佳答案 算法:Split使用十进制表示法将数字分为两部分。运行一个for循环,将每个数字乘以相应的10次幂,例如

javascript - 算法:将列表从一个顺序重新排列到另一个顺序的最佳方法?

编辑:我不确定我原来的问题是否足够清楚。我需要一种算法来计算最小的移动顺序,以将数组从一个顺序重新排列到另一个顺序。众所周知,两个数组将包含相同的元素(无重复项)并且具有相同的长度。例如:reorder(['d','a','c','b','e'],['a','b','c','d','e'])应该返回如下内容:[{move:'d',after:'b'},{move:'c',after:'b'}]这表明我应该先将元素“d”移动到“b”之后,然后将“c”移动到“b”之后,数组将按所需顺序排列。背景:我正在做一个项目(实际上是将rtgui中的大部分功能移至客户端)。现在我正在处理排序。基本上我

javascript - 在具有良好分布的两个整数之间散列字符串(均匀散列)

我正在尝试对介于0和非常低的n之间的一些字符串进行哈希处理,以便为每个用户提供一种颜色。这是我的(工作)代码:functionnameToColor(name){varcolors=['red','blue','green','purple','orange','darkred','darkblue','darkgreen','cadetblue','darkpurple'];varhash=hashStr(name);varindex=hash%colors.length;returncolors[index];}//djb2hashfunctionhashStr(str){varh

javascript - 实现插入功能

我目前正在学习可汗学院的算法类(class),该类(class)使用JS教授基础算法。我目前正在实现插入排序,但发现了一个问题。我们正在编写一个函数,它接受一个数组、起始索引和值,以便在正确的排序位置插入一个数字。我在这里写了上述功能:varinsert=function(array,rightIndex,value){for(vari=rightIndex;array[i]>=value;i--){array[i+1]=array[i];array[i]=value;}returnarray;};这工作正常,并按预期执行,但是它没有通过KA的自动标记系统。他们为代码提供指导并建议这样

Javascript:在(50000 * 50000 网格)二维数组中寻路?

问题因此,假设一个二维整数值数组代表一个网格map,如下所示:+-----+-----+-----+-----+-----+|10|2|2|4|第656章+-----+-----+-----+-----+-----+|234|165|724|759|230|+-----+-----+-----+-----+-----+|第843章734|999|143|213|+-----+-----+-----+-----+-----+|242|2135|131|24|374|+-----+-----+-----+-----+-----+|159|464|155|124|151|+-----+---

javascript - 从父子 JSON 数据中获取所有子项

我有父子JSON数据,我想从选定的父项中获取所有子项(嵌套子项)。例如,我有JSON数据:[{"id":1,"parent":0,"name":"Parent"},{"id":2,"parent":1,"name":"Child1"},{"id":3,"parent":2,"name":"GrandChild1"},{"id":4,"parent":2,"name":"GrandChild2"},{"id":5,"parent":1,"name":"Child2"}]我有findAllChildren(1)函数,其中“1”是“parent”,函数的结果应该是:[{"id":2,"par

javascript - 在 JavaScript 中记住任何给定的递归函数

我对我们有一些函数f的场景很感兴趣,它是递归的,但我们没有提供源代码。我想要一个函数内存器:Function->Function接受sayf并返回一个函数g使得g=f(从某种意义上说,它们在给定相同参数的情况下返回相同的值)在调用时首先检查是否被调用的参数在它的“缓存”中(它之前计算过的结果的内存),如果是这样,则返回结果,否则它应该计算f,f应该用一些参数调用自己,这等同于用这些参数调用g和我希望f首先检查g的缓存是否包含这些参数,如果是,则返回结果,否则...鉴于f的源代码,这很容易(在Javascript中)完成,我简单地以明显的方式定义memoize并做类似的事情letf=me

Javascript 树遍历算法

我需要帮助以深度优先的方式遍历树结构。我想不出一个算法来正确地做到这一点。我的输入是这样的:[["A","B","C"],["1","2"],["a","b","c","d"]]输出应采用以下形式:["A/1/a","A/1/b","A/1/c","A/1/d","A/2/a","A/2/b","A/2/c","A/2/d","B/1/a","B/1/b","B/1/c","B/1/d","B/2/a","B/2/b","B/2/c","B/2/d","C/1/a","C/1/b","C/1/c","C/1/d","C/2/a","C/2/b","C/2/c","C/2/d"]

javascript - 确定二维点是否在四边形内

我正在开发一个JS程序,我需要确定点是否在坐标系的四个Angular内。有人可以指出答案的方向吗?我正在看我认为称为凸四边形的东西。也就是说,四个非常随机选择的Angular位置,所有Angular都小于180°。谢谢。 最佳答案 有两种相对简单的方法。第一种方法是从该点到“无穷大”(实际上,到多边形之外的任何点)绘制一条射线,并计算该射线与多边形的多少条边相交。当且仅当计数为奇数时,该点位于多边形内。第二种方法是对每对顶点vi和vi+1按顺序绕过多边形(必要时绕到第一个顶点),计算数量(x-xi)*(yi+1-yi)-(xi+1-