零题目:算法(leetode,附思维导图+全解)300题(2125)入库激光束数1.题目描述2.解法概览(思维导图)3.所有解法1方案11)代码://方案1《直接计数-模拟法》。//思路://1)状态初始化:地图存储各层存储安全设备的情况。//2)核心一:遍历银行的每一层。//2.1)遍历当前层的每一列。//2.1.1)如果第i层的第j列是安全设备,则通过map对对应的值进行+1操作。//3)核心2:2层遍历。//3.1)如果当前i和j层有安全设备,而(i,j)层没有安全设备,//那么resCount+=(map.get(i)*map.get(j)).//4)返回结果resCount。varnumberOfBeams=function(bank){//isValid方法:顶部和底部之间没有安全装置,这意味着它是“合法的”。constisValid=(top,bottom,map)=>{letresBool=true;for(leti=top+1;i{consttempStr=bank[level],tempStrLength=tempStr.length;让resNum=0;for(leti=0;i0){resCount+=pre*cur;前=当前;}}//3)返回结果resCount。returnresCount;}3Scheme31)Code://Scheme3“4行代码(因为有4个分号)——安装X方法”。//n个元素变成1个元素--->优先使用数组的reduce方法。//思路://1)通过数组的map方法,计算出银行每一层的安全设备数量——依次存入数组(“假设叫tempList”),//2)通过数组的reduce方法,根据当前层的安全设备数量(cur)不断更新当前激光束总数(acc)并返回。varnumberOfBeams=function(bank){让pre=0;返回bank.map(item=>item.split('').filter(itemInner=>itemInner==='1').length).reduce((acc,cur)=>{if(cur>0){//注意:这一行相当于下面两行代码[acc,pre]=[acc+(pre*cur),cur];//acc+=pre*cur;//pre=cur;}returnacc;},0);}四大资源分享&more1历史文章-概览2博主简介码农三少,一位致力于编写极简但完整的问题解决方案(算法)的博主。专注一题多解,结构化思维,欢迎一起刷LeetCode~