平滑器

题解图片平滑器

发布时间:2022/4/6 11:07:33   
怎样治好白癜风 http://pf.39.net/bdfyy/bdfhl/181211/6706972.html
一、获取题干昨天的题[.字典序的第K小数字]没做上来,反反复复卡了得有一个小时。构造树的方法是用对了,不过分支树是否存在这个问题一直没理明白,越想越乱套,总感觉离最后一步就差一点了,不过就是碰不到,就很难受。总结了两点:

形成的字典树与k有什么关系?对于每一级的权重,可以根据总级数和当前级数来计算权重,得到权重后逐级累加并与k值反复相减,直到k=0,此时可以得到想要的第k个元素在字典树中的位置,总级数与n的长度有关。

如何判断当前层级的分支是否存在?这个问题我还没搞懂。我的感觉是因为n不够大导致被计算的数实际上不在[1,n]中,所以只需要判断n与最后一层数据的关系即可,但如何计算……还没想好。

嗨,管他呢,过几天碰到了再看吧,先看看今天的题。

今天的问题就简单多了,简简单单的图片卷积变形题。这类问题有个规律:简单的就用多重循环,难一点就滑动窗口,滑动窗口今天用不上,以后碰到了再细说。二、分析对于一个问题,如果我们有两种以上的解决办法,但不清楚该用哪种效率更高点。我们可以通过一个比较直观的办法判断他是难题还是简单题来决定用什么方法,就是看提示,以今天的这道题为例:

数组规模很小,宽高不超过

计算区域为3*3,也足够的小

这样的问题使用多层循环完全可以解决问题,我们没必要把简单问题做得更复杂。那么什么样的问题要用到滑动窗口呢?数组规模与计算效率一定正相关,这块肯定是优化不了了。但如果计算区域比较大,而且数组规模也恰好很大的情况,我们如果仍然反复地循环计算,很有可能会出现计算超时的情况。这个时候,滑动窗口的计算方法就比较好了。滑动窗口平滑获取数据这一特性就可以让结果值以最小的代价实时更新,发挥它最大的价值。

三、题解一个四重循环,前两个用来遍历数组,后两个用来遍历计算区域,计算的时候要注意不存在的元素不被计算。其实这里我有想过根据计算区域中间点位的的位置来处理边界值的问题,不过似乎分支判断太多,写代码成本还不如直接循环呢。四、代码

Js代码:

/***

param{number[][]}img*

return{number[][]}*/varimageSmoother=function(img){letarr=[],m=img.length-1,n=img[0].length-1;constgetPoint=(y,x)={letsums=0,sumNum=0;for(leta=-1;a2;a++){if(!(y+a0

y+am)){for(letb=-1;b2;b++){if(!(x+b0

x+bn)){sums+=img[y+a][x+b]sumNum+=1}}}}returnMath.floor(sums/sumNum);}for(leti=0;im+1;i++){arr[i]=[];for(letj=0;jn+1;j++){arr[i][j]=getPoint(i,j);}}returnarr;};END预览时标签不可点收录于话题#个上一篇下一篇

转载请注明:http://www.aideyishus.com/lkyy/0.html

------分隔线----------------------------

热点文章

  • 没有热点文章

推荐文章

  • 没有推荐文章