草庐IT

algorithm

全部标签

javascript - 如何实现像浏览器一样的后退和前进功能

我想在我的项目中实现像浏览器一样的后退和前进功能,比如我们有屏幕的网页。我试过的是最初m设置currentscreenindex=-1当第一个屏幕的数据到来时执行这个函数Inscreendataarrivefunction(){this.currentscreenindex++;this.screenvisited[this.currentscreenindex]=data;}这是我尝试过的后退功能:back(){currentscreenindex--;varscreen=screenvisited[currentscreenindex];//willgotothisscreen}但

javascript - 通过带有神秘逗号的堆算法进行排列

为了周五的入学申请,我花了一整天(终于)思考置换算法的实践。Heap的算法对我来说似乎是最简单和优雅的。这是一个例子:http://en.wikipedia.org/wiki/Heap%27s_algorithmfunctionpermutationArr(num){varstr=num.toString();vararr=str.split('');varpermutations=[];functiongetPerm(arr,n){varlocalArr=arr.slice(0);vari;varswap;vartemp;if(n==1){permutations.push(loca

javascript - 替换数据 block 中的多个模式

我需要找到在单个文本block上匹配多个正则表达式的最有效方法。举一个我需要的例子,考虑一段文本:“你好,多么美好的一天”我想将Hello替换为“Bye”,将“World”替换为Universe。当然,我总是可以在循环中执行此操作,使用各种语言可用的String.replace函数之类的东西。但是,我可能有一大块包含多个字符串模式的文本,我需要对其进行匹配和替换。我想知道我是否可以使用正则表达式来高效地执行此操作,还是我必须使用像LALR这样的解析器。我需要在JavaScript中执行此操作,因此如果有人知道可以完成此操作的工具,我们将不胜感激。 最佳答案

javascript - 矩阵的螺旋遍历——JavaScript中的递归求解

我正在尝试提出一个采用如下矩阵的解决方案:[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]并返回一个以螺旋形式遍历数组的数组,因此在本例中:[1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10]我在使用这个递归解决方案时遇到问题,其中结果数组采用第一个数组,其余数组的最后一个元素,倒序排列的底部数组,然后是中间的第一个元素数组,然后在没有外部“外壳”的情况下重组数组,以便可以递归调用剩下的内容,直到中心有一个元素的数组或2x2矩阵(我的基本情况,尽管后者可能不是必需的。..)我的解决方案,但不起作用,如下所示。关

javascript - 获取数组组合的最接近值(JS)

我正在寻找一种算法,可用于组合数组中的值,以尽可能接近“另一个值”。例如,我想找出给出关闭结果的组合的数字是2.5。我的数组是[0.5,1.0,1.5,2.0,3.0]。本例中的组合为2.0+0.5。2.7会产生相同的组合(2.5是最接近的),而3.7会产生3.0+0.5而7.0会产生3.0+3.0+1.0。我一直在阅读不同的算法来创建可用的组合等等——例如这个:https://codereview.stackexchange.com/questions/7001/better-way-to-generate-all-combinations但是,我很难编写一个允许多次使用相同值的函数

javascript - 如何使用非递归堆栈编写递归函数?

为了尝试在JavaScript中实现一个不会使旧浏览器因堆栈溢出而崩溃的PEG,我想制作一个以非递归方式解析字符串的解析表达式语法。你怎么做到这一点?感觉脑筋急转弯。假设您有这样的结构:一个文法有很多表达一个表达式有很多匹配器一个matcher有很多tokens(或者任何更好的词)token可以指向另一个expression,也可以是原始字符串或正则表达式。因此,如果它指向另一个表达式,这就是递归开始的地方。假设您这样定义层次结构:vargrammar=newGrammar('math');varexpression=grammar.expression;expression('mat

javascript - javascript中的最佳算法分组数据

以下(简化的)json数据类型定义了联系人:{id:number;name:string;phone:string;email:string}有如下一组数据:+---+----------+-------------+---------------------------+|id|name|phone|email|+---+----------+-------------+---------------------------+|1|John|11111111|aaaa@test.com||2|Marc|22222222|bbbb@test.com||3|Ron|99999999|aa

javascript - document.querySelector 是如何实现的?

我想这个问题的答案取决于您使用的是什么浏览器,但我想这只会让它变得更加有趣。我想知道querySelector()方法实际执行。同样,我很好奇querySelectorAll()和其他方法,如getElementById()和getElementByClassName()等等它是深度优先搜索、广度优先搜索,还是利用一些辅助数据结构,如全局哈希表作为注册表? 最佳答案 您要求的所有信息都在您提供的链接中:querySelector:Returnsthefirstelementwithinthedocument(usingdepth-f

javascript - 按层次结构和名称对具有层次结构的对象数组进行排序

我有一个嵌套对象数组:[{_id:1,parent:0,name:'Z'},{_id:4,parent:0,name:'A'},{_id:2,parent:1,name:'H'},{_id:8,parent:2,name:'G'},{_id:5,parent:4,name:'M'},{_id:6,parent:4,name:'N'},{_id:3,parent:1,name:'Z'},{_id:7,parent:2,name:'L'}]我需要对它们进行排序,因为同一级别的节点将按字母顺序排序(asc/desc可配置),并且所有子节点都应在其父节点之后且在其父节点的兄弟节点之前也按字母顺

javascript - 给定维度上数组数据的聚合

请原谅n00b-ish问题,但我是数据结构的新手。我最近被要求将一个给定数组聚合到另一个数组上并生成一个基于树的结果。有人可以给我一些关于如何获得此输出的指示吗?输入varT=[['COUNTRY','GENDER','MARITALSTATUS','SALES'],['India','Female','Single',2400],['India','Male','Single',5200],['India','Female','Married',4300],['India','Male','Married',3200],['England','Female','Single',160