草庐IT

algorithm

全部标签

javascript - 使用 JavaScript 获取给定月份的给定工作日

我正在尝试获取某个日期所在月份的第n个工作日,例如第二个星期日。例如,如果日期是2015年8月24日,我想这样做:nthDayOfMonth(0,2,newDate(2015,7,24))并得到2015年8月9日(八月的第二个星期日)。然后我希望能够向日期添加一个月,再次调用该函数,并获得2015年9月13日(9月的第二个星期日)。由于某些原因,以下代码无法正常工作。我错过了什么?functionnthDayOfMonth(day,n,date){console.log(day);console.log(n);varcount=0;varidate=newDate(date);idat

javascript - 如何更快地匹配此文本?

我正在为名字建立一个自动建议。当用户在文本框中输入内容时,它会访问服务器并运行:varnames=[listof1000names];//Ihavealistof1000names,thisisstatic.varquery='alex';varmatched_names=[];//Thisiswhenitgetsslow....names.forEach(function(name){if(name.indexOf(query)>=0){matched_names.push(name);}});returnmatched_names;我怎样才能让它更快?我正在使用Node.js

javascript - 查找重叠事件/时间的算法

在处理自定义日历时,我不知道如何找到与任何其他时间段重叠的时间段。时间段从0到720(上午9点到晚上9点,每个像素代表一分钟)。varevents=[{id:1,start:0,end:40},//aneventfrom9:00amto9:40am{id:2,start:30,end:150},//aneventfrom9:30amto11:30am{id:3,start:20,end:180},//aneventfrom9:20amto12:00am{id:4,start:200,end:230},//aneventfrom12:20pmto12:30pm{id:5,start:54

javascript - 根据另一个数组按顺序对数组进行排序

我有一个从数据库返回的对象,如下所示:[{id:1},{id:2},{id:3}]。我有另一个数组指定第一个数组的排序顺序,如下所示:[2,3,1]。我正在寻找一种可以接受这两个数组并返回[{id:2},{id:3},{id:1}]的方法或算法。理想情况下,它应该是高效的而不是n平方。 最佳答案 如果你想要线性时间,首先从第一个数组构建一个哈希表,然后通过循环第二个数组按顺序选择项目:data=[{id:5},{id:2},{id:9}]order=[9,5,2]hash={}data.forEach(function(x){has

javascript - 确定 2 的幂?

我正在创建一个简单的括号系统,我需要一种方法来检查是否有正确数量的团队,或者我的程序是否需要补偿轮空。现在,我正在使用此函数检查“2的幂”:functionvalidBracket(data){varx=data.teams.length;return((x!=0)&&!(x&(x-1)));}这非常有效,但我需要知道要添加多少轮再见。例如,如果我有16个团队,我就不需要再添加团队了。但是,如果我有12个团队,我需要前4个团队才能轮空。如何计算要添加到我的括号中的轮空轮数?对2的幂的数组进行硬编码会更好吗?在伪代码中,我想到的是这样的:if(validateBracket(data))

javascript - 为什么DOM树是oder preorder,深度优先遍历?

为什么DOM树是先序,深度优先遍历?与BFT等其他遍历相比,这种设计选择有什么优势?我只是在调查DOMstandard并找到了preceding和following的定义:AnobjectAisprecedinganobjectBifAandBareinthesametreeandAcomesbeforeBintreeorder.AnobjectAisfollowinganobjectBifAandBareinthesametreeandAcomesafterBintreeorder.JustlikemostprogrammingparadigmstheWebplatformhasfi

javascript - 如何将数字分成整数部分,每个部分都是n的倍数?

很难为它想出一个简洁的标题。我确定我想要完成的事情有一些条款,而且毫无疑问,有一个通用算法可以完成我所追求的事情——我只是还不知道它们。我需要将一个数字分成n个部分,每个部分都是50的倍数。这个数字本身就是50的倍数。下面是一个示例:将5,000除以3,得到三个数字,每个数字都是50的倍数:1,6501,7001,650我还想分配数字,以便它们来回翻转,这是一个包含更多数字的示例来说明这一点:将5,000除以7,得到7个数字,每个数字都是50的倍数:700750700750700700700请注意,在上面的示例中,我并不担心额外的50不在系列的中心,也就是说我不需要这样的东西:7007

javascript - Javascript 拼接方法中的奇怪错误

我有一个包含“Zeros”的数组,我想移动所有数组最后一个索引的“零”。预期的输出是:[1,2,3,0,0,0,0]但我得到的是:[1,2,0,3,0,0,0]leta=[0,1,2,0,0,3,0];letcount=0;letlen=a.length;for(i=0;i 最佳答案 当您从数组中删除项目时,所有元素都会向下移动一位。当您推进索引(i++)时,您会跳过数组中下移的项目,该项目恰好是数组中的连续零。解决方案:向后执行fornext循环,它会起作用。 关于javascript

javascript - 影响 Math.random()

我正在寻找一种方法来影响Math.random()。我有这个函数来生成一个从最小值到最大值的数字:varrand=function(min,max){returnMath.floor(Math.random()*(max-min+1))+min;}有没有办法让它比中间的数字更容易得到低和高的数字?例如;rand(0,10)将返回比其余更多的0,1,9,10。 最佳答案 Isthereawaytomakeitmorelikelytogetalowandhighnumberthananumberinthemiddle?是的。您想要更改生

javascript - 查找无向图的所有连通分量

我有一个对象列表(无向边),如下所示:pairs=[pair:["a2","a5"],pair:["a3","a6"],pair:["a4","a5"],pair:["a7","a9"]];我需要在单独的组中找到所有组件(连接的节点)。所以从给定的对中我需要得到:groups=[group1:["a2","a5","a4"],group2:["a3","a6"],group3:["a7","a9"]];我实际上在这里阅读了一些答案并用谷歌搜索了这个,这就是我如何了解到这被称为“在图中查找连接的组件”,但是找不到任何示例代码。我在Node.js上使用JavaScript,但任何其他语言的