var MovingAverage = function(size) {
this.arr=[]
this.l=size
this.sum=0
};
MovingAverage.prototype.next = function(val) {
this.arr.push(val)
this.sum+=val
if(this.arr.length>this.l){
this.sum-=this.arr.shift()
}
return this.sum/this.arr.length
};
var minCostClimbingStairs = function(cost) {
const dp=new Array(cost.length+1)
dp[0]=0,dp[1]=0
for(let i=2
dp[i]=Math.min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2])
}
return dp[cost.length]
}
var rob = function(nums) {
const dp=new Array(nums.length)
dp[0]=nums[0]
dp[1]=Math.max(nums[0],nums[1])
for(let i=2
dp[i]=Math.max(dp[i-2]+nums[i],dp[i-1])
}
return dp[nums.length-1]
}
var rob = function(nums) {
if(nums.length===1){
return nums[0]
}
return Math.max(helper(nums.slice(0,nums.length-1)),helper(nums.slice(1,nums.length)))
}
const helper=(nums)=>{
const dp=new Array(nums.length)
dp[0]=nums[0]
dp[1]=Math.max(nums[0],nums[1])
for(let i=2
dp[i]=Math.max(dp[i-2]+nums[i],dp[i-1])
}
return dp[nums.length-1]
}
var minCost = function(costs) {
const n = costs.length
let dp = new Array(3).fill(0)
for (let j = 0
dp[j] = costs[0][j]
}
for (let i = 1
const dpNew = new Array(3).fill(0)
for (let j = 0
dpNew[j] = Math.min(dp[(j + 1) % 3], dp[(j + 2) % 3]) + costs[i][j]
}
dp = dpNew
}
return parseInt(_.min(dp))
}