当前位置: 首页 > Web前端 > JavaScript

【算法学习篇】-滑动窗口算法(javascript

时间:2023-03-27 16:52:14 JavaScript

Slidingwindowalgorithm:字面意思,windows大家都见过,可以开闭窗口(废话×)这里滑动窗口算法的窗口分为固定的和非固定的-fixed.fixed,fixed就是生活中看到的那种窗,想象一个大窗,然后推拉窗就是纱窗,这里的纱窗就是固定推拉窗,如果不是固定的,就需要自己想象一下screenwindow是可伸缩的,随便在网上找张图,感受一下:后面的大窗口就是要遍历的对象,screenwindow分为左右边框,用来在大窗口中找到符合条件的目标对象。注意:对于固定窗口,不需要使用左框,因为如果窗口固定大小为k,右框直接减去k就等于左框.看一个滑动窗口算法问题得到一个感觉(固定窗口):语言:JavaScript1.自创题(很简单,可以做来玩):给定一组数组,遍历数组,每三个算一个子串,计算子串之和ofeachcombination,advanced:求和每个组合的子串后的最大值。输入:[-3,3,5,1,3,7,4]输出:[5,9,9,11,14]高级输出:14解释:①-3+3+5=5②3+5+1=9③5+1+3=9④1+3+7=11⑤3+7+4=14最笨的方法hhh如下图(以后再想优化方案):functiontemp(s){let左=0,右=2;//定义滑动窗口的左右边框letsumArr=[];//将每次滑动获得的总和放入一个新数组中letn=s.length;//将数组的长度赋值给一个新的变量if(n<=2){//因为固定窗口为3,如果数组中的值个数小于3,就不需要继续做returns;//直接返回数组}while(right